更改可执行文件中动态库的路径

时间:2013-04-27 22:25:10

标签: dynamic-linking

我正在使用clang构建我的程序,并使用外部库。我用他们提供的二进制文件(/usr/lib/libary.so)开发了一段时间,但我现在想转到更新的版本。

我下载了源代码并构建了它,产生了一个包含文件和一个新库(在我的〜/ library / build目录中)。

编译代码时,我使用

clang++ main.cpp -I ~/library/include -L ~/library/build/lib -llibrary

这包括最新的头,并找到正确的库(我知道它找到了正确的库,因为没有-L标志,我得到一个错误,说'未定义引用NewlyIntroducedFunction')。

然而,当我尝试运行a.out时,我收到错误:

./a.out: symbol lookup error: ./a.out: undefined symbol: NewlyIntroducedFunction

在./a.out上运行ldd会向我显示以下行:

library.so => /usr/lib/library.so

所以我假设,虽然在编译时正在使用正确的库,但在运行时却没有。我将〜/ library / build添加到PATH的开头,但是没有用。

如何找到正确的library.so版本?

1 个答案:

答案 0 :(得分:2)

您的LD_LIBRARY_PATH变量(库搜索路径)可能不正确