2012-04-17 2 views
0

나는 지난 6 시간 정도를 알아 내려고 노력하고 있다는 매우 간단한 질문을 가지고있다. Mac OS X에서 동적 라이브러리를 간단히 빌드 한 다음 해당 라이브러리를 사용하여 응용 프로그램을 빌드하고자합니다. 나는 .dylib을 만들어 그것으로 테스트 응용 프로그램을 컴파일,하지만 응용 프로그램을 실행할 때 나는 도착했습니다Mac OS X에서 동적 라이브러리를 만들고 사용하려면 어떻게해야합니까?

Joes의-맥 프로 : 데스크탑 조 $ ./test dyld를 :로드 라이브러리하지 : ./lib를 /simple_library.dylib 에서 참조 : /Users/Joe/Desktop/./test 이유 : 이미지를 찾을 수 없습니다 추적/BPT 트랩 : 5

나는 실행 디렉토리에 lib 폴더를 만들고 퍼팅 시도했다 내부의 dylib, 같은 오류. 실행 경로 자체에 dylib를 넣으려고했는데 같은 오류가 발생했습니다. install_name_tool을 사용하여 실행 파일에서 dylib의 경로를 변경하려고 시도했지만 아무것도 변경하지 않고 동일한 오류가 발생했습니다. 나는 -headerpad_max_install_names를 사용하여 테스트 애플리케이션을 빌드 한 다음 install_name_tool을 사용하여 경로를 변경하려고 시도했다. 아직도 아무것도 바뀌지 않습니다. 같은 오류.

Mac 운영체제에서는 불가능한 작업이 무엇입니까? 나는이 플랫폼에 익숙하지 않고 Windows 및 GNU/Linux에서 장애없이 작동하는 데 익숙합니다. 또한 명령 줄을 사용하여이 모든 작업을 수행하려고합니다. 나는 Xcode를 피하는 것을 아주 좋아할 것이다.

편집 : 죄송합니다. 내가 install_name_tool 인수에 오타를 만들었습니다. 지금은 괜찮아.

답변

0

DYLD_LIBRARY_PATH에 라이브러리가있는 디렉토리가 포함되어 있는지 확인해야합니다.

DYLD_LIBRARY_PATH 
      This is a colon separated list of directories that contain libraries. The dynamic linker searches these directo- 
      ries before it searches the default locations for libraries. It allows you to test new versions of existing 
      libraries. 

      For each library that a program uses, the dynamic linker looks for it in each directory in DYLD_LIBRARY_PATH in 
      turn. If it still can't find the library, it then searches DYLD_FALLBACK_FRAMEWORK_PATH and DYLD_FALL- 
      BACK_LIBRARY_PATH in turn. 

      Use the -L option to otool(1). to discover the frameworks and shared libraries that the executable is linked 
      against. 

동적 링크의 다양한 세부 사항은 dyld 매뉴얼 페이지에 설명되어 있습니다.

0

install_name_tool은 올바른 도구입니다. 누락 된 dylib를 보려면 otool your_binary을 시도하십시오. 또한 바이너리와 연결된 라이브러리가 동일한 아키텍처를 위해 빌드되었는지 확인하십시오.