Um herauszufinden, wonach der Linker sucht, führen Sie ihn im ausführlichen Modus aus.
Dieses Problem ist beispielsweise beim Kompilieren von MySQL mit ZLIB-Unterstützung aufgetreten. Beim Kompilieren wurde folgende Fehlermeldung angezeigt:
/usr/bin/ld: cannot find -lzlib
Ich habe ein bisschen Googl'ing gemacht und bin immer wieder auf verschiedene Probleme der gleichen Art gestoßen, bei denen die Leute sagten, sie würden sicherstellen, dass die .so-Datei tatsächlich existiert. Wenn dies nicht der Fall ist, erstellen Sie einen Symlink zu der versionierten Datei, z. B. zlib. so.1.2.8. Aber als ich nachgesehen habe, war zlib.so DID vorhanden. Also, dachte ich, das könnte doch nicht das Problem sein.
Ich bin auf einen anderen Beitrag im Internet gestoßen, der vorschlug, make mit LD_DEBUG = all auszuführen:
LD_DEBUG=all make
Obwohl ich eine TONNE Debugging-Ausgabe habe, war es nicht wirklich hilfreich. Es fügte mehr Verwirrung als alles andere hinzu. Also wollte ich aufgeben.
Dann hatte ich eine Offenbarung. Ich dachte, ich sollte den Hilfetext für den Befehl ld überprüfen:
ld --help
Daraus habe ich herausgefunden, wie man ld im ausführlichen Modus ausführt (stellen Sie sich das vor):
ld -lzlib --verbose
Dies ist die Ausgabe, die ich erhalten habe:
==================================================
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...
Um es endlich zu beheben, damit ich MySQL mit meiner eigenen Version von ZLIB kompilieren kann (anstatt mit der mitgelieferten Version):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Voila!