2009-10-14 69 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