ld가 LD_LIBRARY_PATH를 무시하는 경우가 있습니까?

ld가 LD_LIBRARY_PATH를 무시하는 경우가 있습니까?

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_PATHLD_LIBRARY_PATH영향을 미치는 환경 변수. 그것하다LD_LIBRARY_PATH언제 참고하세요다른 라이브러리에 필요한 라이브러리 찾기, 기본 빌드에서 다음의 동작을 시뮬레이션합니다.ld.so.

관련 정보