2010-04-28 106 views
4

我一直试图解决这个问题几个小时了。 我正在使用gcc编译一些c文件。这些文件需要libpbc,因此我使用-L标志将gcc指向包含libpbc.so.1的目录。该代码在编译时没有错误但当我尝试运行它,我收到以下错误信息:当使用-L专门查找库时出现“加载共享库时出错”

./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) 

回答

6
ldd example.out 

这将会给很多有关动态链接有用的信息。更具体地讲,虽然,你的问题很可能在于在不是库的路径。

/etc/ld.so.conf 

请注意,如果您更新文件,则必须运行

ldconfig -v 
+0

我需要根来更新该文件?我想静态链接这个库。 – 2010-04-28 02:17:44

+0

ls -l /etc/ld.so.conf查看其权限。它通常只能由root写入。 如果你想静态链接库,这是一个完全不同的话题。我的文章中的一切都是关于动态链接的。 如果您想要变为静态,请将-static参数用于gcc。有许多陷阱伴随着静态链接,因为它并不总是做你认为它正在做的事情。 :) – Bob 2010-04-28 02:22:36

+0

是的,静态链接似乎已经打破了一切=( – 2010-04-28 02:45:33