링커가 libpthread를 찾을 수 없습니다.

링커가 libpthread를 찾을 수 없습니다.

두 프로그램의 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. 새 위치를 가리키도록 업데이트해야 합니다.

관련 정보