告诉 linux 二进制在哪里加载共享库

Tell to linux binary where load shared libraries

本文关键字:共享 加载 在哪里 linux 二进制 告诉      更新时间:2023-10-16

我对共享库有问题。我有一个与一些共享库链接的二进制文件。我已经用 c++ 构建了所有使用 gcc -L dirLibraries ecc ecc -llibraryName1 -libraryName2 ecc现在,如果我启动我的二进制文件,告诉我他找不到一个库,如果我从另一个目录启动二进制文件,他告诉我找不到另一个库。我需要做什么才能告诉我的二进制文件在哪里需要独立加载库我启动程序的位置?

您可以将要加载的共享库放在库搜索路径上,或将包含它们的目录添加到LD_LIBRARY_PATH 中。另请参阅共享库,尤其是"第 3.2 节。如何使用库"和"第 3.3.1 节。LD_LIBRARY_PATH"。

有两个环境变量可能会有所帮助:

  1. LD_RUN_PATH在构建过程中用于配置查找共享库时要搜索的一组位置。
  2. LD_LIBRARY_PATH 在运行程序时用于添加要搜索共享库的其他路径。

环境变量的设置方式在一定程度上取决于您使用的环境。如果您使用的是像 bashksh 这样的 shell,您可以使用

export LD_LIBRARY_PATH=/some/path:/another/path:/as/many/as/you/need

在它之后,从这个 shell 启动的程序将继承环境变量(你可能还想查看相关的文档,例如 bash 的文档)。

如果使用某种 IDE,则可能需要从~/.profile文件中设置环境变量。