Pour comprendre ce que l'éditeur de liens recherche, exécutez-le en mode détaillé.
Par exemple, j'ai rencontré ce problème en essayant de compiler MySQL avec le support ZLIB. Je recevais une erreur comme celle-ci lors de la compilation:
/usr/bin/ld: cannot find -lzlib
J'ai fait un peu de Googl et j'ai continué à rencontrer différents problèmes du même genre où les gens disaient pour s'assurer que le fichier .so existe réellement et si ce n'est pas le cas, puis créer un lien symbolique vers le fichier versionné, par exemple, zlib. donc.1.2.8. Mais, quand j'ai vérifié, zlib.so DID existait. Donc, je pensais que ça ne pouvait pas être le problème.
Je suis tombé sur un autre post sur les Internets qui a suggéré d'exécuter make avec LD_DEBUG = all:
LD_DEBUG=all make
Bien que j'aie eu une tonne de sortie de débogage, ce n'était pas vraiment utile. Cela a ajouté plus de confusion qu'autre chose. J'étais sur le point d'abandonner.
Ensuite, j'ai eu une révélation. J'ai pensé à vérifier le texte d'aide de la commande ld:
ld --help
À partir de cela, j'ai compris comment exécuter ld en mode verbeux (imaginez cela):
ld -lzlib --verbose
Voici la sortie que j'ai obtenue:
==================================================
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 ...
Donc, pour enfin le corriger afin que je puisse compiler MySQL avec ma propre version de ZLIB (plutôt que la version fournie):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Voila!