使用-L专门查找库时,在加载共享库时出现'错误'

时间:2010-04-28 01:57:39

标签: gcc compiler-errors

我一直试图解决这个问题几个小时了。 我正在使用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)

2 个答案:

答案 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