ld找不到已安装的库

时间:2009-10-14 16:54:53

标签: linux gcc linker shared-libraries ld

我坐在OpenSuse 11.1 x64 Box上,我有一个使用sigc ++的模块。链接时如下:

g++ [a lot of o's, L's and l's] -lsigc-2.0

我得到了

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lsigc-2.0

然而,图书馆在那里 在文件系统中:

$ sudo find / -name "libsigc-2.0*"
/usr/lib64/libsigc-2.0.so.0.0.0
/usr/lib64/libsigc-2.0.so.0
/usr/lib64/libsigc-2.0.so

在ld.so.conf中我有:

/usr/lib64

当调用ldconfig:

$ ldconfig -v | grep sigc
libsigc-2.0.so.0 -> libsigc-2.0.so.0.0.0

为什么?

2 个答案:

答案 0 :(得分:1)

我太笨了。这是一个旧代码库,就在-lsigc-2.0语句之前我有一个

-Wl,-Bstatic

显然,libsigc(不再)没有静态库。

答案 1 :(得分:0)

libsigc-2.0.so可能与libsigc-2.0以外的SONAME相关联。

  

objdump -p /usr/lib64/libsigc-2.0.so | grep SONAME

如果您发现意外情况,例如: libsigc,您可能需要创建一个具有该名称的附加符号链接。