2009-10-14 72 views
1

我坐在OpenSuse 11.1 x64 Box上,我有一个使用sigC++的模块。当链接是这样的:ld找不到安装的库

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 

为什么?

+0

我刚刚意识到,ldconfig不会放出libsigc-2.0.so,但只有libsigc-2.0.so.0。两者都是libsigc-2.0.so.0.0.0的符号链接,但为什么只有.0链接被ldconfig处理? – GeeF 2009-10-14 19:35:20

回答

1

我好蠢。这是一个古老的代码库,只是在-lsigc-2.0发言之前,我有一个

-Wl,-Bstatic 

显然,对于libsigc没有静态图书馆的(再)。

0

libsigc-2.0.so可能与libsigc-2.0以外的SONAME链接。

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

如果您发现意想不到的情况,例如libsigc,您可能需要使用该名称创建其他符号链接。

+0

它给我 SONAME libsigc-2.0.so.0 这就是ldconfig用来设置链接到libsigc-2.0.so.0.0.0 – GeeF 2009-10-15 07:05:04