problemi di libreria condivisa su linux
-
10-07-2019 - |
Domanda
Sto cercando di compilare / collegare un software molto vecchio su un sistema Linux e per qualche motivo non riesco a collegarmi con una libreria condivisa installata sul mio sistema.
Ricevo il seguente errore dal linker:
/usr/bin/ld: cannot find -lXaw
Tuttavia, la stessa libreria è installata. Se corro
ldconfig -v | grep libXaw
Ottengo (tra le altre cose) questo successo:
libXaw.so.7 -> libXaw7.so.7.0.0
La libreria e i collegamenti ad essa sono in / usr / lib btw. Quindi niente di speciale.
Quindi la libreria è lì e ldconfig la trova. Cosa potrebbe causare ld dal non trovare la libreria durante il collegamento? Come avrai già intuito, sono abbastanza nuovo nelle cose della libreria condivisa.
Qualche idea?
Soluzione
Il linker potrebbe cercare letteralmente "libXaw.so". È in / usr / lib? In caso contrario, potresti provare ad aggiungerlo come altro soft link da libXaw7.so.7.0.0.
Altri suggerimenti
Il motivo del collegamento simbolico tra cui è selezionare la versione predefinita per il collegamento in caso di più versioni, tenere presente che il nome della libreria è integrato nel binario. (che puoi vedere con ldd).
Le directory della libreria -L sono state sovrascritte e non stanno cercando in / usr / lib?
Per collegarlo, è necessario il file .a, NON il file .so, che è la libreria di runtime. L'oggetto condiviso è utile solo per un programma già collegato alle parti non condivise di una libreria. Questo è tipicamente distribuito in un ".a" file.