2011-09-22 5 views
0

Boost C++ 라이브러리를 설치할 루트 권한이 없으므로이를 로컬 홈에 설치했습니다. 컴파일 할 때, 내가 사용 : g++ -I/home/name/local/boost_1_47_0 -L/home/name/local/boost_1_47_0/stage/lib foo.cc -o foo -lboost_program_options런타임에 libboost_program_options.so.1.47.0 프로그램을 찾을 수 없습니다.

하지만 런타임에, 그것은 간다 : error while loading shared libraries: libboost_program_options.so.1.47.0: cannot open shared object file: No such file or directory

및 LDD가 제공 : libboost_program_options.so.1.47.0 => not found

가 나는 또한 라이브러리의 절대 경로를 지정하려하지만 아무튼 g++ /home/name/local/boost_1_47_0/stage/lib/libboost_program_options.so.1.47.0 -I/home/name/local/boost_1_47_0 -L/home/name/local/boost_1_47_0/stage/lib foo.cc -o foo

답변

3

LD_LIBRARY_PATH 환경 변수를 사용하여 런타임 링커에게 라이브러리를 찾을 위치를 알려주십시오.

export LD_LIBRARY_PATH=/home/name/local/boost_1_47_0/stage/lib 

그런 다음 응용 프로그램을 다시 실행하십시오.

+0

이것이에게 좋은 장기 해결책이 아니다는 것을 주목할 필요가 문제. 결국 boost_program_options가 시스템 라이브러리 검색 경로 LD_LIBRARY_PATH로 들어가거나 로컬 공유 라이브러리와 함께 실행 경로를 사용하도록 할 것입니다. http://blogs.oracle.com/rie/date/20040710 – tyree731

+0

을 참조하십시오. 시스템 장소에 설치할 수없는 경우 릴리스 용 정적 라이브러리를 사용하므로 LD_LIBRARY_PATH는 필요하지 않습니다. – Mark

0

저는 초보자입니다. 제 말을 너무 심각하게 생각하지 마십시오. 게다가,이 질문은 몇 달 전의 일입니다. 그럼에도 불구하고 여기에 내가 생각하는 것이있다.

링커에 대한 라이브러리 경로를 지정하면 프로그램이 컴파일되어 잘 링크됩니다. 그러나 바이너리를 실행하려고하면 환경 정의 된 경로에서 libs를 찾습니다.

나는이

수출 PATH = $ PATH에 떠들썩한 파티에 입력하여 고정 할 수 있습니다 같아요 path_to_your_library_folder

안부를 미로슬라프을

관련 문제