Per capire cosa sta cercando il linker, eseguilo in modalità dettagliata.
Ad esempio, ho riscontrato questo problema durante il tentativo di compilare MySQL con il supporto ZLIB. Stavo ricevendo un errore del genere durante la compilazione:
/usr/bin/ld: cannot find -lzlib
Ho fatto un po 'di googl'ing e ho continuato a imbattermi in diversi problemi dello stesso tipo in cui le persone direbbero per assicurarsi che il file .so esista effettivamente e, in caso contrario, quindi creare un link simbolico al file con versione, ad esempio zlib. so.1.2.8. Ma, quando ho controllato, zlib.so DID esiste. Quindi, ho pensato, sicuramente non poteva essere questo il problema.
Mi sono imbattuto in un altro post su Internet che ha suggerito di eseguire make con LD_DEBUG = all:
LD_DEBUG=all make
Anche se ho avuto un sacco di output di debug, in realtà non è stato utile. Ha aggiunto più confusione di ogni altra cosa. Quindi stavo per arrendermi.
Poi, ho avuto un'epifania. Ho pensato di controllare effettivamente il testo di aiuto per il comando ld:
ld --help
Da ciò, ho capito come eseguire ld in modalità dettagliata (immagina):
ld -lzlib --verbose
Questo è l'output che ho ottenuto:
==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.a failed
attempt to open /usr/local/lib64/libzlib.so failed
attempt to open /usr/local/lib64/libzlib.a failed
attempt to open /lib64/libzlib.so failed
attempt to open /lib64/libzlib.a failed
attempt to open /usr/lib64/libzlib.so failed
attempt to open /usr/lib64/libzlib.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.a failed
attempt to open /usr/local/lib/libzlib.so failed
attempt to open /usr/local/lib/libzlib.a failed
attempt to open /lib/libzlib.so failed
attempt to open /lib/libzlib.a failed
attempt to open /usr/lib/libzlib.so failed
attempt to open /usr/lib/libzlib.a failed
/usr/bin/ld.bfd.real: cannot find -lzlib
Ding, ding, ding ...
Quindi, per risolverlo finalmente in modo da poter compilare MySQL con la mia versione di ZLIB (piuttosto che la versione in bundle):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Ecco!