如果没有 LD_LIBRARY_PATH,程序如何知道它的共享库在哪里

如果没有 LD_LIBRARY_PATH,程序如何知道它的共享库在哪里

foobar我有一个使用共享库的程序。我LD_LIBRARY_PATH正确设置了,然后当我运行时

>ldd foobar

我可以看到它知道所需的所有库的完整路径。

但是,在某些系统(“较大”)上,我不需要LD_LIBRARY_PATH知道ldd库在哪里,而在某些系统(“较小”)上,我需要知道库在哪里。

在两个系统上,可执行文件foobar是相同的,它的路径是相同的,并且所有库和它们的路径都是相同的。

所以这意味着,rpath在两种情况下,可执行文件的内置内容是相同的。

那么一定还有其他方法可以确定图书馆的位置吗? 是什么方法呢?

答案1

/lib 和 /usr/lib 是自动添加的。其他库从 /etc/ld.so.conf 文件中添加。

答案2

ldconfig是一个维护共享库缓存的实用程序。正确配置后,正确的库路径将被缓存并可供管理人员使用。您可以使用它ldconfig -p来打印当前可用的库候选。

请参阅 的手册页ldconfig(8)

相关内容