我一直试图解决这个问题几个小时了。 我正在使用gcc编译一些c文件。这些文件需要libpbc,所以我使用-L标志将gcc指向包含libpbc.so.1的目录。代码编译时没有错误,当我尝试运行它时,我收到以下错误消息:
./ example.out:加载共享库时出错:libpbc.so.1:无法打开共享对象文件:没有这样的文件或目录
查看类似问题,此错误消息似乎表明gcc无法找到libpbc.so.1。我知道gcc看到了libpbc.so.1,因为当我将libpbc.so.1重命名为其他东西时,它无法编译。
我使用-L指向包含libpbc.so.1的目录。
不确定我可以采取哪些后续步骤来解决这个问题。会欣赏任何想法。这个错误信息到底意味着什么?
运行ldd example.out导致:
linux-gate.so.1 => (0xb7fe3000)
libpbc.so.1 => not found
libgmp.so.3 => /usr/lib/libgmp.so.3 (0xb7f87000)
答案 0 :(得分:6)
ldd example.out
这将提供有关动态链接的大量有用信息。更具体地说,你的问题很可能在于图书馆的路径不在。
/etc/ld.so.conf
请注意,如果您更新该文件,则必须运行
ldconfig -v
答案 1 :(得分:0)
在编译时提供 rpath 标志。
g++ -Wall -o example.out -I ./include/ -L ./examplelibPath -Wl,-rpath ./libPath -l examplelibrary example.cpp