ld non riesce a trovare la libreria che è installato
-
21-09-2019 - |
Domanda
Sono seduto su un OpenSuse 11.1 x 64 Box e ho un modulo che utilizza SIGC ++. Quando si collegano in questo modo:
g++ [a lot of o's, L's and l's] -lsigc-2.0
ho
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lsigc-2.0
Tuttavia la biblioteca è lì.
Nel file system:
$ 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 ho:
/usr/lib64
E quando si richiama ldconfig:
$ ldconfig -v | grep sigc
libsigc-2.0.so.0 -> libsigc-2.0.so.0.0.0
Perché?
Soluzione
Sono così stupido. Si tratta di una vecchia base di codice e poco prima della -lsigc-2.0 dichiarazione che ho avuto un
-Wl,-Bstatic
Ovviamente, non ci sono librarys statici per libsigc (più).
Altri suggerimenti
E 'possibile che libsigc-2.0.so era legato con una Soname diverso libsigc-2.0
.
objdump -p /usr/lib64/libsigc-2.0.so | grep Soname
Se vedete qualcosa di inaspettato, ad esempio, libsigc
, potrebbe essere necessario creare un collegamento simbolico supplementare con quel nome.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow