"alpha"라는 바이너리 실행 파일이 있는데 링크 된 라이브러리 (libz.so.1.2.7)가 필요합니다. /home/username/myproduct/lib/libz.so.1.2.7
다음 명령을 실행하여 이진 실행 파일을 생성하기 전에 터미널 인스턴스로 내 보냅니다.
export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH
이제 동일한 라이브러리가 필요하지만 다른 버전 (예 : (libz.so.1.2.8))이 필요한 다른 응용 프로그램 "bravo"를 생성
/lib/x86_64-linux-gnu/libz.so.1.2.8
하면 시스템에서 다음 오류가 발생합니다.
version `ZLIB_1.2.3.3' not found (required by /usr/lib/x86_64-linux-gnu/libxml2.so.2)
을 설정 해제하면 LD_LIBRARY_PATH
"bravo"가 정상적으로 시작됩니다. 위의 동작은 연결된 라이브러리를 찾는 동안 LD_LIBRARY_PATH
정의 된 디렉토리 경로보다 우선 하기 때문에 /etc/ld.so.conf
위의 오류가 발생 했음을 이해합니다 . 라이브러리의 첫 번째 인스턴스가 다른 버전 인 경우 UNIX / LINUX 개발자가 계층 구조에 따라 다른 디렉토리에서 링크 된 라이브러리를 검색하도록 OS를 설계하지 않은 이유가 궁금합니다.
간단히 말해, UNIX / LINUX 시스템은 필요한 라이브러리를 찾을 때까지 일련의 디렉토리를 통과합니다. 그러나 버전에 관계없이 라이브러리의 첫 번째 인스턴스를 수락하는 대신 예상 버전을 찾을 때까지 왜 그렇게하지 않습니까?
libz.so.1
libz.so.1.2.8