2013-12-19 55 views
1

我有一个共享库的问题。 我有一个二进制链接与一些共享库。 我已经用C++编译了所有的gcc -L dirLibraries ecc ecc -llibraryName1 -libraryName2 ecc 现在,如果我启动我的二进制文件告诉我他找不到一个库,如果我从另一个目录启动二进制文件,他告诉我可以找不到另一个图书馆。 我需要做什么来告诉我的二进制文件需要独立加载库的位置,我启动程序的位置?告诉Linux二进制文件加载共享库

回答

1

有两个环境变量可以帮助:

  1. LD_RUN_PATH楼,配置一组位置时用来寻找共享库时被搜索。
  2. LD_LIBRARY_PATH用于运行程序以添加要搜索共享库的其他路径。

如何设置环境变量取决于您使用的环境。如果您使用的是壳状bashksh可以使用

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

跟随它,节目从这个shell将继承环境变量开始(你可能也想看看相关的文件,例如,​​)。

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

+0

exaclty你可以向我解释如何以及在哪里需要设置envoirment变量吗? – pava91

+0

@ pava91:我已经扩大了答案。 –

2

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