Um herauszufinden, wonach der Linker sucht, führen Sie ihn im ausführlichen Modus aus.
Zum Beispiel stieß ich auf dieses Problem, als ich versuchte, MySQL mit ZLIB-Unterstützung zu kompilieren. Während der Kompilierung erhielt ich einen Fehler wie diesen:
/usr/bin/ld: kann -lzlib nicht finden
Ich habe ein wenig gegoogelt und bin immer wieder auf verschiedene Probleme desselben Typs gestoßen, bei denen Leute sagten, Sie sollten sicherstellen, dass die .so-Datei tatsächlich existiert und wenn nicht, dann einen Symlink zur versionierten Datei erstellen, zum Beispiel zlib.so.1.2.8. Aber als ich überprüfte, dass zlib.so existierte, dachte ich, dass konnte nicht das Problem sein.
Ich stieß auf einen anderen Beitrag im Internet, der vorschlug, make mit LD_DEBUG=all auszuführen:
LD_DEBUG=all make
Obwohl ich eine MENGE Debug-Ausgaben bekam, war es tatsächlich nicht hilfreich. Es brachte mehr Verwirrung als etwas anderes. Also war ich kurz davor aufzugeben.
Dann hatte ich eine Erleuchtung. Ich dachte daran, den Hilfetext für den ld-Befehl tatsächlich zu überprüfen:
ld --help
Daraus erkannte ich, wie man ld im ausführlichen Modus ausführt (stellt euch das vor):
ld -lzlib --verbose
Dies ist die Ausgabe, die ich erhalten habe:
==================================================
Versuch, /usr/x86_64-linux-gnu/lib64/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/x86_64-linux-gnu/lib64/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /usr/local/lib64/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/local/lib64/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /lib64/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /lib64/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /usr/lib64/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/lib64/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /usr/x86_64-linux-gnu/lib/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/x86_64-linux-gnu/lib/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /usr/local/lib/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/local/lib/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /lib/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /lib/libzlib.a zu öffnen, fehlgeschlagen
Versuch, /usr/lib/libzlib.so zu öffnen, fehlgeschlagen
Versuch, /usr/lib/libzlib.a zu öffnen, fehlgeschlagen
/usr/bin/ld.bfd.real: kann -lzlib nicht finden
Ding, ding, ding...
Also, um es endlich so zu beheben, dass ich MySQL mit meiner eigenen Version von ZLIB kompilieren konnte (anstatt der gebündelten Version):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Voilà!