Чтобы выяснить, что ищет компоновщик, запустите его в подробном режиме.
Например, я столкнулся с этой проблемой, пытаясь скомпилировать MySQL с поддержкой ZLIB. Я получаю сообщение об ошибке во время компиляции:
/usr/bin/ld: cannot find -lzlib
Я занимался поиском в Google и продолжал сталкиваться с разными проблемами одного и того же типа, когда люди говорили, чтобы убедиться, что файл .so действительно существует, а если нет, то создать символическую ссылку на версионный файл, например, zlib. so.1.2.8. Но, когда я проверил, zlib.so существует. Итак, я подумал, конечно, это не может быть проблемой.
Я наткнулся на другой пост в интернете, в котором предлагалось запустить make с LD_DEBUG = all:
LD_DEBUG=all make
Хотя я получил тонну отладочной информации, на самом деле это не помогло. Это добавило больше путаницы, чем что-либо еще. Итак, я собирался сдаться.
Затем у меня было прозрение. Я подумал проверить текст справки по команде ld:
ld --help
Из этого я понял, как запустить ld в подробном режиме (представьте, что):
ld -lzlib --verbose
Это вывод, который я получил:
==================================================
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
Динь, динь, динь ...
Итак, чтобы наконец это исправить, чтобы я мог скомпилировать MySQL с моей собственной версией ZLIB (а не в комплекте):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Вуаля!