0

我正在使用 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?

4

1 回答 1

2

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

于 2013-04-27T22:28:01.933 回答