링커가 무엇을 찾고 있는지 알아 보려면 상세 모드로 실행하십시오.
예를 들어 ZLIB를 지원하는 MySQL을 컴파일하는 중에이 문제가 발생했습니다. 컴파일하는 동안 다음과 같은 오류가 발생했습니다.
/usr/bin/ld: cannot find -lzlib
나는 Googl'ing을하고 사람들이 .so 파일이 실제로 존재하는지 확인하고 존재하지 않으면 zlib와 같은 버전이 지정된 파일에 대한 심볼릭 링크를 만드는 동일한 종류의 다른 문제를 계속 발견했습니다. 그래서 1.2.8. 그러나 확인했을 때 zlib.so DID가 존재합니다. 그래서 나는 그것이 문제가 될 수 없다고 생각했습니다.
인터넷에서 LD_DEBUG = all로 make를 실행하도록 제안한 다른 게시물을 발견했습니다.
LD_DEBUG=all make
TON의 디버깅 출력을 얻었지만 실제로 도움이되지는 않았습니다. 그것은 다른 것보다 더 혼란을 더했습니다. 그래서 포기하려고 했어요.
그리고 나는 주현절이있었습니다. 실제로 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
딩, 딩, 딩 ...
따라서 마침내 수정하여 번들 버전이 아닌 자체 ZLIB 버전으로 MySQL을 컴파일 할 수 있습니다.
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
짜잔!