2011-05-09 4 views
1

소스 용 프로그램을 컴파일 중이며 컴파일 된 일부 동적 라이브러리를 찾지 못했습니다. 실행 파일을 실행할 때 출력은 다음과 같습니다. 내가 컴파일하는 동안 -L은 라이브러리를 찾아 알고,공유 라이브러리에 몇 가지 문제가 있습니다.

dyld: Library not loaded: libipeqtcanvas.so.7.0.14 
    Referenced from: /Users/zrbecker/testipe/bin/./ipe 
    Reason: image not found 
Trace/BPT trap 

내 질문은 (그것은 잘 컴파일)하지만 어떻게 내가 실행할 때 프로그램이 라이브러리를 찾을 수 있는지 확인하십시오.

라이브러리는 bin 디렉토리에있는 실행 파일의 상대 경로 ../lib에 있습니다.

+0

컴파일 과정은 라이브러리에 대한 모든 정보를 가지고있는 실행 파일을 만듭니다. 컴파일 그 자체만으로도 충분합니다. 따라서 언급 한 경로에 라이브러리가있는 컴퓨터에서 실행 파일을 만들려면 모든 것이 올바르게 실행되어야합니다. 그러나이 바이너리를 가져 와서 다른 곳 (라이브러리가없는 곳)에서 실행하면 문제가 될 수 있습니다. – Sriram

+1

C 또는 C++? 하나를 선택. 실제로 이것과 아무 상관이없는 것처럼 들립니다. –

답변

2

런타임시 라이브러리 디렉토리를 포함하도록 LD_LIBRARY_PATH (또는 실제로는 OS32에 있기 때문에 DYLD_LIBRARY_PATH)을 설정할 수 있습니다.

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/lib"

+0

굉장하지만, 컴파일 타임에 처리 할 수있는 방법이 있습니까? – zrbecker

+0

그냥 추가. App 번들 내부의 모든 것을 패키지하려고하므로 라이브러리는 번들 내부에 있고 잠재적으로 이동할 것입니다. – zrbecker

+0

실행 파일의 런타임 경로를 참조하는 경로에'@ executable_path'를 포함시킬 수있을 것 같습니다. – James

관련 문제