2014-08-31 2 views
2

libgdiplus와 같은 외부 libs 몇 개가 필요한 Linux 용 응용 프로그램을 컴파일하고 함께 묶으려고합니다. GDIPlus가 설치되어 있지 않은 환경에서 응용 프로그램을 실행하려고하면 libgdiplus.so의 로컬 복사본을 찾지 못하고 다음 디렉터리에 있습니다.로드 할 라이브러리를 로컬 디렉토리에서 어떻게 링크합니까?

무슨 일이 일어나는지 strace를 사용하면 명확하게/lib/usr/lib/etc와 같은 위치를 확인하지만 로컬 디렉토리는 확인하지 못합니다.

로컬 디렉토리에서 외부 라이브러리를 검색하도록 응용 프로그램에 지시하려면 어떻게해야합니까?

+1

LD_PRELOAD 또는 LD_LIBRARY_PATH를 사용하려면'man ld.so'을 참조하십시오. 그러나 이것은 응용 프로그램이 처음 설치되는 디렉토리를 찾거나 환경을 설정하고 exec의 바이너리를 작성하는 wrapper-script를 작성해야한다는 것을 의미합니다. bash를 사용하면 $ 0은 디렉토리를 파생시킬 수있는 전체 경로를 나타냅니다. –

+0

필자는 바이너리를 간단히 배포하고 설치 또는 래퍼 스크립트 요구 사항 없이도 작동 할 수 있다는 점을 매우 중요하게 생각합니다. –

답변

2

답변을 찾았습니다. 링커에서 rpath를 사용하여 검색 경로를 다음과 같이 지정해야합니다.

-Wl,-rpath,. 
관련 문제