Linux 无法链接不在Ubuntu 12.04系统库目录下的共享库

Linux 无法链接不在Ubuntu 12.04系统库目录下的共享库,linux,ubuntu,Linux,Ubuntu,我使用带有适当选项的gcc创建了一个共享库libsslab_core.so.1.0.0。我非常确定共享库可以工作,因为我已经将它链接到另一个源代码(我使用编译器的-l选项显式地告诉编译器gcc库的位置) 在测试了库的工作原理之后,我尝试将库集成到我的Linux机器中。我转到/etc/ld.so.conf.d/并添加了一个文件sslab.conf。在文件中,我刚刚输入了库的绝对路径/opt/lib/sslab。接下来,我以root用户身份执行ldconfig,以更新ldconfig的缓存文件。我通

我使用带有适当选项的gcc创建了一个共享库libsslab_core.so.1.0.0。我非常确定共享库可以工作,因为我已经将它链接到另一个源代码(我使用编译器的-l选项显式地告诉编译器gcc库的位置)

在测试了库的工作原理之后,我尝试将库集成到我的Linux机器中。我转到/etc/ld.so.conf.d/并添加了一个文件sslab.conf。在文件中,我刚刚输入了库的绝对路径/opt/lib/sslab。接下来,我以root用户身份执行ldconfig,以更新ldconfig的缓存文件。我通过键入ldconfig-p | grep libsslab检查系统是否找到了新添加的库。我的Linux机器找到了库,所以我认为一切都结束了

但是,当我尝试使用库编译源代码时,它会给出以下错误:

/usr/bin/ld: cannot find -lsslab_core
当我将库移动到/usr/local/lib时,更新sslab.conf的内容,并以root用户身份执行ldconfig。我可以毫无问题地使用共享库

你对我在Ubuntu 12.04上遇到的问题有什么想法吗


请参考TLDP中的一个文档以生成我自己的共享库。下面是链接:

ldconfig只影响运行时链接器(ld.so),而不影响编译器附带的链接器。对于后者,您仍然必须使用-L。当gcc编译带有共享库的源代码时,它是否会按顺序在ldconfig注册的目录中找到库?正如我所写的,当我的共享库位于系统库目录(如/usr/lib、/usr/local/lib或/lib)下时,我不需要在编译时指定库的位置。如果您是对的,那么将库位置添加到ld.so.conf意味着什么?你能给我更详细的信息吗?man ldconfig说:“配置动态链接器运行时绑定”。很清楚,你的第一个观点是不正确的。例如,当编译器使用pthread库时,不需要指定它的位置。你需要做的就是添加这个:-lpthread。此外,我不需要使用-L选项来指定库的位置。但是,我必须使用-l选项指定要在任何库中使用函数的库的名称。在这种情况下,我的共享库位于默认的linux库目录下,例如/lib或/usr/local/lib。让我再次澄清我的问题:“为什么gcc编译器不能找到添加的库的位置,而它们不在默认的linux库目录下,即使ldconfig知道它们的位置?