2

我坐在 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

为什么?

4

2 回答 2

2

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

-Wl,-Bstatic

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

于 2009-10-16T09:10:58.827 回答
0

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

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

如果你看到一些意想不到的东西,例如libsigc,你可能需要用那个名字创建一个额外的符号链接。

于 2009-10-14T17:45:40.773 回答