두 프로그램의 32비트 버전을 구축하려고 하는데 둘 다 동일한 오류 메시지가 표시됩니다.
/usr/bin/ld: cannot find /media/34GB/Arquivos-de-Programas-Linux/Glibc-2.17-32bit/lib/libpthread.so.0
위 경로에서 Glibc 디렉토리를 다음으로 이동했기 때문에 왜 찾을 수 없는지 확실히 이해합니다.
/media/34GB/Arquivos-de-Programas-Linux-32bit/Glibc-2.17/lib/libpthread.so.0
그런데 왜 ld가 이렇게 잘못된 경로에서 libpthread를 찾고 있는지 모르겠습니다. /usr/lib32에 Glibc lib 파일을 가리키는 여러 개의 심볼릭 링크가 있지만 이는 정확합니다. libpthread를 담당하는 심볼릭 링크는 위의 두 번째 경로를 가리킵니다. ldconfig를 실행했지만 효과가 없었습니다.
첫 번째 프로그램을 빌드하려고 시도했을 때 구성에 전달한 일부 라이브러리에 이 이전 경로가 하드 링크되어 있었기 때문에 이것이 이유였습니다.
그러나 두 번째 프로그램에서 구성을 실행할 때 동일한 오류 메시지가 나타나도록 라이브러리를 전달할 필요가 없으므로 원인이 다른 것일 수 있습니다.
그래서 나는 ld가 이전 디렉토리에서 libpthread를 찾는 이유에 대한 어떤 제안에도 열려 있습니다.
답변1
ld
.so
파일(심볼릭 링크 또는 링커 스크립트)로 라이브러리를 찾습니다. 귀하가 받고 있는 오류는 libpthread.so
의 이전 위치를 가리키는 항목을 찾고 있음을 나타냅니다 libpthread.so.0
. 새 위치를 가리키도록 업데이트해야 합니다.