Linux 바이너리는 기본 라이브러리를 인식하고 사용해야 합니다.

Linux 바이너리는 기본 라이브러리를 인식하고 사용해야 합니다.

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).

관련 정보