2013-02-22 2 views
1

동적 라이브러리를 사용하는 프로그램을 컴파일하려면이 라이브러리를 설치해야합니다 (예 : 특정 위치 (예 :/usr/share/lib)에 복사)합니까? 또는이 라이브러리를 어딘가에 넣고 나중에 링크하는 동안 링커를 가리키면 좋습니다. '-L ./thelibfolder'?동적 라이브러리 사용

답변

0

이 라이브러리를 설치해야합니까 (예 : 특정 장소 (예 :/usr/share/lib)에 복사)합니까? 유닉스 공유 라이브러리의

번호

, 당신은 두 가지를 준비해야합니다

  • 당신은 주요 실행 파일을 연결하는 동안 정적 링커에 알려진 라이브러리를 확인해야합니다. 보통 이것은 링크 행에 -L/path/to/directory -lfoo 링크 플래그를 추가하여 이루어집니다.
  • 런타임 로더 검색 /path/to/directory도 만들어야합니다. 이는 시스템에 따라 다릅니다. 많은 시스템에서 환경 변수 LD_LIBRARY_PATH을 설정하면 원하는 결과를 얻을 수 있지만 일반적으로 선호되는 방법은 아닙니다. 또 다른 방법은 애플리케이션 자체에이 경로를 인코딩하는 것입니다. Linux에서는 응용 프로그램 링크 행에 -Wl,-rpath=/path/to/directory을 추가합니다.
+0

답장을 보내 주셔서 감사합니다. 내가 가진 문제는 링커가 라이브러리를 찾을 수 없다는 것인데, 여기에 대해 물어 보았다 : http://stackoverflow.com/questions/15007309/embedding-python-3-3, 그런 다음 정말로 설치해야하는지 파이썬 3.3. gcc embed.c -I./include -L. -lpython33'과'gcc embed.c -I./include -rpath =. -L. -lpython33' - 두 옵션을 모두 시도해 보았습니다 ('DYLD_LIBRARY_PATH = ". gcc는'-Wl' 스위치를 인식하지 못하지만 여전히 동작하지 않습니다. 제발, 왜 링크에 실패했는지 알아? –

관련 문제