2009-10-14 9 views
1

Je suis assis sur une machine OpenSuse 11.1 x64 et j'ai un module qui utilise sigC++. Lors de la liaison comme ceci:Impossible de trouver la bibliothèque installée

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

Je reçois

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

Cependant la bibliothèque est là.
Dans le système de fichiers:

$ 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 

Dans ld.so.conf J'ai:

/usr/lib64 

Et lors de l'appel ldconfig:

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

Pourquoi?

+0

Je viens de réaliser que ldconfig ne libère pas libsigc-2.0.so mais seulement libsigc-2.0.so.0. Les deux sont des liens symboliques vers libsigc-2.0.so.0.0.0 mais pourquoi seul le lien .0 est-il traité par ldconfig? – GeeF

Répondre

1

Je suis tellement bête. Il est un vieux et codebase juste avant la déclaration -lsigc 2.0 j'ai eu un

-Wl,-Bstatic 

De toute évidence, il n'y a pas librarys statique pour libsigc (plus).

0

Il est possible que libsigc-2.0.so ait été lié avec un SONAME autre que libsigc-2.0.

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

Si vous voyez quelque chose d'inattendu, par ex. libsigc, vous devrez peut-être créer un lien symbolique supplémentaire avec ce nom.

+0

Il me donne SONAME libsigc-2.0.so.0 et c'est ce que ldconfig prend pour définir le lien vers libsigc-2.0.so.0.0.0 – GeeF