Linux 바이너리가 라이브러리/종속성을 인식하고 사용하도록 만드는 방법은 무엇입니까? 로컬 라이브러리, 즉 /usr/local/bin에 설치했으므로 /usr/local/lib에 있습니까?
답변1
라이브러리 검색 경로는 데이터베이스 항목을 통해 시스템 수준에서 제어하거나 /etc/ld.so.cache
환경 변수를 설정하여 애플리케이션 수준에서 제어할 수 있습니다.LD_LIBRARY_PATH
전체 시스템
필요한 라이브러리가 포함된 디렉토리를 에 추가하십시오 /etc/ld.conf.d
. 일부 시스템에서는 해당 라이브러리를 에 직접 추가해야 할 수도 있습니다 /etc/ld.conf
.
ldconfig
라이브러리 데이터베이스를 업데이트하려면 실행하세요 ./etc/ld.so.cache
애플리케이션
LD_LIBRARY_PATH
애플리케이션 컨텍스트에 필요한 라이브러리가 포함된 디렉터리(또는 디렉터리)를 포함하도록 설정하거나 확장합니다 .
LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" /usr/local/bin/your_app arg1 arg2…
LD_LIBRARY_PATH
비어 있거나 애플리케이션과 관련된 내용이 전혀 포함되어 있지 않다고 보장할 수 있는 경우 이 호출을 단순화할 수 있습니다.
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/your_app arg1 arg2…
두 경우 모두 이미 가지고 있는 경우 애플리케이션에 대한 명시적 경로를 사용하지 않음으로써 단순화할 수 있습니다 /usr/local/bin
. $PATH
예를 들어,
LD_LIBRARY_PATH=/usr/local/lib your_app arg1 arg2…
답변2
@roaima의 답변 외에도 애플리케이션을 컴파일하여 네이티브 라이브러리를 명시적으로 찾을 수 있습니다. 다음에 추가
-Wl,-rpath /usr/local/lib
컴파일 명령에 추가합니다(사용 중인 것으로 가정 gcc
).