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