ld
방금 설명할 수 없는 작은 문제 에 직면했습니다 . 내 홈 디렉토리에 라이브러리를 컴파일하고 모두 설치했다고 가정해 보겠습니다 ~/root
. 공유 라이브러리 파일은 다음 위치에서 찾을 수 있습니다 ~/root/usr/local/lib/libmylib.so
.
~/root/usr/local/lib
링커의 검색 경로에 없기 때문에 LD_LIBRARY_PATH
평소대로 설정했습니다.
LD_LIBRARY_PATH="$HOME/root/usr/local/lib"
export LD_LIBRARY_PATH
그리고 라이브러리가 사용 가능한지 확인하십시오.
$ ls $LD_LIBRARY_PATH/libmylib.so
/home/me/root/usr/local/lib/libmylib.so
이제 실행하면:
$ ld -lmylib --verbose
마지막 몇 줄에는 다음 내용이 포함되어야 합니다.
attempt to open /home/me/root/usr/local/lib/libmylib.so succeeded
-lmylib (/home/me/root/usr/local/lib/libmylib.so)
내 경우를 제외하고는 그렇지 않았습니다. ld
조회가 전혀 수행되지 않습니다 /home/me/root
. 의 내용이 LD_LIBRARY_PATH
출력에 전혀 나타나지 않습니다. ld
이는 변수가 뻔뻔스럽게 무시되었음을 나타냅니다(실제로 내 디렉토리는 SEARCH_DIR
출력 앞에 나타나지 않습니다).
그러나 다음을 실행하면:
$ ld -L $LD_LIBRARY_PATH -lmylib --verbose
위의 줄을 얻었고 모든 것이 잘 진행되었습니다. 이는 라이브러리나 설치 경로에 문제가 없음을 의미합니다.
ld
무시할 수 있는 상황이 있습니까 LD_LIBRARY_PATH
? 확인했지만 env
다른 링커 관련 변수( RPATH
, LIBRARY_PATH
, LD_RUN_PATH
, 모두 테스트됨)를 찾을 수 없습니다. 아래 구성은 일부 (다른) 디렉토리를 등록하는 것 외에는 /etc/ld.so.*
아무 것도 수행하지 않는 것 같습니다 . 이 머신은 Scientific Linux 7.4, gcc 6.4 및 ld 2.25.1을 실행합니다. 문제의 라이브러리는 입니다 libxml++-3.0
.
답변1
내가 아는 한, 적어도 명령줄에 지정된 라이브러리는 ld
목록 에 없습니다 .LD_LIBRARY_PATH
LD_LIBRARY_PATH
영향을 미치는 환경 변수. 그것하다LD_LIBRARY_PATH
언제 참고하세요다른 라이브러리에 필요한 라이브러리 찾기, 기본 빌드에서 다음의 동작을 시뮬레이션합니다.ld.so
.