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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top