告诉linux二进制文件加载共享库

时间:2013-12-19 16:20:32

标签: c++ gcc linker shared-libraries

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

2 个答案:

答案 0 :(得分:2)

您可以将要加载的共享库放在库搜索路径上,或将包含它们的目录添加到LD_LIBRARY_PATH。另见Shared Libraries,尤其是“第3.2节。如何使用库”和“第3.3.1节.LD_LIBRARY_PATH”。

答案 1 :(得分:1)

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

    在构建期间使用
  1. LD_RUN_PATH来配置在查找共享库时要搜索的一组位置。
  2. 运行程序时使用
  3. LD_LIBRARY_PATH添加其他路径以搜索共享库。
  4. 如何设置环境变量在某种程度上取决于您使用的环境。如果您使用的是bashksh之类的shell,则可以使用

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

    在此之后,从此shell启动的程序将继承环境变量(您可能还需要查看相关文档,例如bash's documentation)。

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