我偶然发现我的 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)。
阅读德雷珀的如何编写共享库了解更多。