2012-05-23 6 views
0

다른 프로그램에서 동적으로로드하는 라이브러리를 작성하고 있습니다. 이 라이브러리는 Boost 라이브러리 (예 : 스레드)를 사용합니다. 문제의 프로그램을 다시 컴파일하지 않고 어떻게 든 작동하게 할 수 있습니까?다른 라이브러리를 동적으로로드 된 라이브러리에 연결

링크 플래그 -lboost_thread을 사용하면이 라이브러리를 사용하는 프로그램이 동일한 부스트 라이브러리를 연결해야하기 때문에 작동하지 않습니다. .a 파일이 -fPIC으로 컴파일되지 않았기 때문에 /usr/lib/libboost_thread.a을 사용하면 작동하지 않습니다.

Linux에서 GCC를 사용하고 있습니다.

+0

라이브러리를로드하는 프로그램이 런타임에 부스트 라이브러리를로드해야합니까? 빌드 할 때 주 응용 프로그램에 * 라이브러리 * 링크 할 필요는 없습니다. 런타임 종속성이 될 것입니다 ... 맞습니까? – tmpearce

+0

프로그램은 내가 작성한 하나의 동적 라이브러리를로드합니다. 그 라이브러리는 Boost에 의존합니다. – petersohn

+0

그래서 프로그램이 Boost 라이브러리 *를 런타임에서 찾을 수 없으므로 라이브러리가로드되지 않는 문제가 있습니까? – tmpearce

답변

0

다시 시도해 볼 때 문제는 내가 설명한 것과 다르다는 것을 알았습니다. 라이브러리가 다른 이유로로드되지 않았습니다. (라이브러리가 $LD_LIBRARY_PATH에없는 -L 경로에서있는 가능성이 있기 때문에)

  • GCC 컴파일러 경고를 제공합니다 : 나는 다음과 같은 조건, -lboost_thread 작품 라이브러리를 연결하는 것을 발견했다.
  • 라이브러리를로드 할 때 Boost가 자동으로로드됩니다.