环境中缺少 LD_LIBRARY_PATH 变量是否正常?

环境中缺少 LD_LIBRARY_PATH 变量是否正常?

我偶然发现我的 Debian Jessie 上没有LD_LIBRARY_PATH变量(确切地说,printenv | grep LD没有显示任何与链接器相关的内容,echo "$LD_LIBRARY_PATH"也没有显示任何内容)。

x 终端模拟器中就是这种情况(这可能会由于 setgid 而清除它) 以及基本终端 ( Ctrl+Alt+F1)。

我知道LD_LIBRARY_PATH 可能被认为是不好的因此 Debian 可能会以某种方式阻止它,但另一方面,其中有一些文件/etc/ld.so.conf.d/包含一些要添加到LD_LIBRARY_PATH.我的 rc 文件(据我所知)都没有与LD_LIBRARY_PATH任何一个混淆。

为什么我没有看到LD_LIBRARY_PATH变量?

答案1

是的,没有任何明确的LD_LIBRARY_PATH.另请阅读LD配置(8)ld-linux(8)以及关于路径。请注意,是ldconfig更新/etc/ld.so.cache,而不是LD_LIBRARY_PATH.有时你会设置路径一个可执行文件显式地与-Wl,-rpath,目录gcc在链接时传递给。

如果您需要LD_LIBRARY_PATH(但您可能不应该),请自行设置(例如在 中 ~/.bashrc)。

如果您需要系统范围的设置,您可以考虑添加 /usr/local/lib/并在安装每个库后/etc/ld.so.conf运行。ldconfig

AFAIK$LD_LIBRARY_PATH仅由动态链接器使用ld-linux.so(并且由dlopen(3)使用它)之后执行(2)。也可以看看LDD(1)

阅读德雷珀的如何编写共享库了解更多。

相关内容