2009-10-14 2 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, но почему только l .config обрабатывает только. .0 ссылку? – GeeF

ответ

1

Я такой тупой. Это старая кодовая и непосредственно перед -lsigc-2.0 заявление я имел

-Wl,-Bstatic 

Очевидно, что нет статических Librarys для libsigc (больше).

0

Возможно, что libsigc-2.0.so был связан с SONAME, кроме libsigc-2.0.

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

Смежные вопросы