Linux 为什么GNU链接器找不到带有-l<;的共享对象;图书馆>;?

Linux 为什么GNU链接器找不到带有-l<;的共享对象;图书馆>;?,linux,gcc,linker,ld,Linux,Gcc,Linker,Ld,尝试链接对象文件时出错: $ g++ -o intro intro.o -L -Wl,-rpath-link -lnotes -lm -lnsl -lpthread -lc -lresolv -ldl /usr/bin/ld: cannot find -lnotes collect2: ld returned 1 exit status 但是,这个库似乎就在那里(事实上,我是通过在/etc/ld.so.conf.d/中的一个文件中包含/opt/ibm/lotus/notes并运行ldconf

尝试链接对象文件时出错:

$ g++ -o intro intro.o -L -Wl,-rpath-link  -lnotes -lm -lnsl -lpthread -lc -lresolv -ldl
/usr/bin/ld: cannot find -lnotes
collect2: ld returned 1 exit status
但是,这个库似乎就在那里(事实上,我是通过在
/etc/ld.so.conf.d/
中的一个文件中包含
/opt/ibm/lotus/notes
并运行
ldconfig
来实现的):

为什么链接失败?我如何让链接器使用这些共享对象

GCC没有指定运行路径,以便动态链接器可以在运行时找到动态库……另一个在少数平台上可用的选项是将库的完整路径名硬编码到其soname中。这只能通过修改libstdc++/config(如果您正在构建libg++,还可以修改libg++/config)中相应的.ml文件来实现,以便$(libdir)/正好出现在-soname或-h选项中的库名称之前


尝试使用ld的-L标志。我的一个Makefile的示例:

CFLAGS=-c -Wall -O2 \
       -I../libs/libs-x86/include
LDFLAGS=-lupnp \
        -L ../libs/libs-x86/lib

我认为“/etc/ld.so.conf.d/”中描述的库仅用于运行时。。。希望这有帮助

没错,
/etc/ld.so.conf.d/
仅用于
ld.so
ld
是否有类似的配置?我搜索了手册页,但什么也没找到<代码>-L,当然可以。
CFLAGS=-c -Wall -O2 \
       -I../libs/libs-x86/include
LDFLAGS=-lupnp \
        -L ../libs/libs-x86/lib