2 Stimmen

Die ld kann die installierte Bibliothek nicht finden.

Ich sitze auf einer OpenSuse 11.1 x64 Box und habe ein Modul, das sigc++ verwendet. Beim Verlinken wie folgt:

g++ [eine Menge an o's, L's und l's] -lsigc-2.0

bekomme ich

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: kann -lsigc-2.0 nicht finden

Das Bibliothek ist jedoch vorhanden.
Im Dateisystem:

$ 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

In ld.so.conf habe ich:

/usr/lib64

Und beim Aufruf von ldconfig:

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

Warum?

2voto

GeeF Punkte 667

Ich bin so dumm. Es handelt sich um ein altes Codebase und kurz vor der -lsigc-2.0-Anweisung hatte ich eine

-Wl,-Bstatic

Offensichtlich gibt es keine statischen Bibliotheken mehr für libsigc.

0voto

David Joyner Punkte 21019

Es ist möglich, dass libsigc-2.0.so mit einem SONAME verknüpft wurde, das nicht libsigc-2.0 ist.

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

Wenn Sie etwas Unerwartetes sehen, z.B. libsigc, müssen Sie möglicherweise einen zusätzlichen Symlink mit diesem Namen erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X