Para descobrir o que o vinculador está procurando, execute-o no modo detalhado.
Por exemplo, eu encontrei esse problema ao tentar compilar o MySQL com suporte ao ZLIB. Eu estava recebendo um erro como este durante a compilação:
/usr/bin/ld: cannot find -lzlib
Eu fiz algumas pesquisas e continuei encontrando diferentes problemas do mesmo tipo, onde as pessoas diriam para garantir que o arquivo .so realmente exista e, se não existir, crie um link simbólico para o arquivo com versão, por exemplo, zlib. so.1.2.8. Mas, quando eu verifiquei, o zlib.so existia. Então, pensei, certamente esse não poderia ser o problema.
Me deparei com outro post no Internets que sugeria executar make com LD_DEBUG = all:
LD_DEBUG=all make
Embora eu tenha uma tonelada de resultados de depuração, não foi realmente útil. Acrescentou mais confusão do que qualquer outra coisa. Então, eu estava prestes a desistir.
Então, eu tive uma epifania. Eu pensei em realmente verificar o texto de ajuda para o comando ld:
ld --help
A partir disso, eu descobri como executar ld no modo detalhado (imagine isso):
ld -lzlib --verbose
Esta é a saída que eu tenho:
==================================================
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 ...
Então, para finalmente consertá-lo para que eu pudesse compilar o MySQL com minha própria versão do ZLIB (em vez da versão empacotada):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Voila!