2009-05-14 4 views
2

내 Fedora10 시스템에 이미 boost C++ 라이브러리가 설치되어 있지만 내 홈 폴더의 일부 위치에 보관하는 새 버전을 사용하고 싶습니다. g ++에서 기본값 (/usr/include and /usr/lib64) 대신 홈 폴더 위치의 포함 및 라이브러리 파일을 사용하도록하겠습니다.GCC가 기본 경로가 아닌 경로에 라이브러리를 연결하지 않습니다.

또한 ~/.bashrc 파일에 과 같이 환경 변수를 선언했습니다. 이제

내가 실행

g++ -o hello.so -fPIC hello.cpp -shared -lboost_python 

전처리는 (CPLUS\_INCLUDE\_PATH 검색 경로에 높은 우선 순위를 가지고 있기 때문에, 예상대로) 기본 위치를 오버라이드 (override) 내 홈 폴더 위치에서 파일을 포함합니다. 그러나 링커는 같은 선행 규칙을 따르지 않는 것 같습니다. 처음에는 LIBRARY\_PATH을 검색하는 대신 기본 위치 인 /usr/lib64에서 항상 libboost_python.so를 사용합니다. -L 스위치로 명시 적으로 지정하면 내 홈 폴더에있는 libboost\_python.so 라이브러리에만 연결됩니다. 이것은 정말로 불편합니다.

답변

2

-L 스위치는 라이브러리를 찾을 위치를 컴파일러에 알리는 표준 방법입니다. 컴파일러/링커 스위치를 만드는 makefile을 작성하십시오. 시간을 투자 할 가치가 있습니다. 당신은 같은 것을 수행 할 수 있습니다

 
MY_LIBPATH += -L$(BOOST_LIB_PATH) 
MY_INCPATH += -I$(BOOST_INC_PATH) 
hello.so: hello.cpp 
    g++ -o [email protected] -fPIC $(MY_INCPATH) $(MY_LIBPATH) hello.cpp -shared -lboost_python 

을 그리고 당신은 환경을 통해이를 제어 할 수

(메이크 파일을 구성하는 방법에 많은 변화가있을 수 물론.)
관련 문제