컴파일 타임에 공유 라이브러리 종속성 위치 결정

컴파일 타임에 공유 라이브러리 종속성 위치 결정

컴파일 타임에 빌드되는 바이너리에 런타임에 특정 라이브러리를 찾는 경로를 알려주는 것이 가능합니까? 예를 들어, 비표준 위치에 있는 공유 라이브러리에 대해 링크할 때 결과 바이너리를 실행하려면 해당 공유 라이브러리의 경로를 LD_LIBRARY_PATH에 추가해야 하며, 해당 단계를 생략하고 바이너리가 런타임 시 공유 라이브러리의 위치를 ​​알 수 있도록 하는 옵션입니다.

우분투 14.04, GCC.

답변1

-Wl,-rpath,'/path/to/library'예, GCC에 매개변수를 추가하면 가능합니다. 이는 링커가 -rpath '/path/to/library'호출될 때 실행되도록 지시합니다.

일반적으로 다음을 추가하여 대부분의 autoconf 기반 make 파일에 이를 추가할 수 있습니다.

LDFLAGS=-Wl,-rpath=/path/to/library

컴파일 타임 환경.

평소처럼,Wikipedia의 RPATH 기사모든 세부 사항이 있습니다.

답변2

예. 이러한 단계는 사용되는 컴파일러와 링커에 따라 다릅니다.

GNU cc 컴파일러의 경우 추가하면 -Wl,-rpath=/home/me/lib런타임이 연결해야 하는 라이브러리를 검색하는 위치에 /home/me/lib가 추가됩니다.

관련 정보