请有人用初学者的语言解释一下 LD_LIBRARY_PATH 是什么(unix)?

E S*_*ler 5 linux ubuntu

我刚刚在 Ubuntu 上安装了 SPIKEfile(fuzzer),它显示以下内容:

现在您需要设置 LD_LIBRARY_PATH 以包含 libdisasm.so 的路径和 libdlrpc.so 的路径

“printenv”表明不存在这样的变量。

有人可以用初学者的术语向我解释这实际上意味着什么以及如何解决问题。我是一个非常缺乏经验的 Linux 用户。提前致谢。

PS 我发现网上的大多数内容都没有帮助,我宁愿在不知道自己在做什么的情况下进行复制+粘贴。

Oli*_*rth 5

Linux 有共享库的概念,即代码库不被烘焙成可执行文件,而是在程序执行时动态链接。可执行文件仅包含对所需库名称的引用。

LD_LIBRARY_PATH是一个环境变量,列出了 Linux 加载时链接器在查找这些库时应使用的额外路径。它只是一个以冒号分隔的表单列表

/path/to/somewhere:/path/to/somewhere_else:/path/to/narnia
Run Code Online (Sandbox Code Playgroud)

假设您使用的是 Bash,您可以执行以下操作来在列表中添加额外的路径(即使$LD_LIBRARY_PATH最初为空或未设置,这也有效):

export LD_LIBRARY_PATH=/path/to/dir/containing/libdisasm.so:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

(libdlrpc.so 也类似)。

  • @EShindler:“LD_LIBRARY_PATH”应该包含包含目录的路径,而不是库本身。另请参阅以下内容以获取有用的建议:http://www.wiredrevolution.com/system-administration/how-to- Correctly-use-ld_library_path。 (2认同)