cal*_*nfo 16 linux environment-variables ld
我偶然发现在我的 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变量?
Bas*_*tch 23
是的,您没有任何明确的LD_LIBRARY_PATH. 另请阅读ldconfig(8)和ld-linux(8)以及有关rpath 的信息。请注意ldconfig更新/etc/ld.so.cache,而不是LD_LIBRARY_PATH. 有时,您会使用链接时传递给的目录显式设置可执行文件的rpath。-Wl,-rpath,gcc
如果您需要LD_LIBRARY_PATH(但您可能不应该),请自行设置(例如在 中 ~/.bashrc)。
如果需要系统范围的设置,你可以例如考虑增加 /usr/local/lib/中/etc/ld.so.conf并运行ldconfig安装每个库有后。
AFAIK$LD_LIBRARY_PATH仅由动态链接器ld-linux.so(以及使用它的dlopen(3))在execve(2)之后使用。另请参见ldd(1)。
阅读 Drepper 的如何编写共享库了解更多信息。