我正在使用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版本?
答案 0 :(得分:2)
您的LD_LIBRARY_PATH变量(库搜索路径)可能不正确