2017-09-25 4 views
0

은 단순히 #include <boost/whatever.hpp>를 사용하여 프로젝트에 포함 할 수 있습니다소스에서 부스트를 저장소로 설치하는 것과 동일한 결과를 얻는 방법? 부스트는 아래의 코드를 사용하여 설치하면

sudo apt install libboost-dev 

Boost install instruction에 따르면, #include <boost/whatever.hpp>$BOOST_ROOT를 사용하여 달성 될 수있다.

부스트가 저장소를 통해 설치된 경우에는 $BOOST_ROOT이 존재하지 않습니다.

실제로 저장소에서 부스트를 설치하고 소스에서 설치할 때 동일한 결과를 얻는 방법은 무엇입니까?

답변

2

gcc에는 기본 검색 경로가 있습니다. 소스에서 부스트를 컴파일하고 make install을 실행하면 자신을 "BOOST_ROOT"으로 지칭하는 디렉토리에 설치합니다. 그 디렉토리는 gcc의 include 파일에 대한 기본 검색 경로가 아니기 때문에 컴파일 할 때 프로그램이 헤더를 찾을 수 있도록 약간의 마일을 추가해야합니다.

boost deb 패키지는 /usr/include/boost에 헤더를 설치합니다. /usr/include은 gcc 헤더 검색에 포함되어 있으므로 추가 작업이 필요하지 않습니다.

해당 동작을 복제하려면 부스트가 /usr/local/include/boost에 설치되도록 지시하는 것이 좋습니다.

/usr/local 디렉토리는 로컬로 컴파일 된 라이브러리 설치 전용이므로 deb가 설치되는 /usr/include보다 나은 경로입니다. 이렇게하면 충돌을 피할 수 있습니다. 더 나아가 그것은 gcc의 헤더 파일에 대한 기본 검색 경로에 있습니다.

+1

기본 경로에 설치 한 다음'mkdir -p/usr/local/include;를 설치하는 것이 더 낫습니다. ln -s/usr/local/boost_x_y/include/boost/usr/local/include' (바이너리의 경우도 마찬가지). 이렇게하면 여러 개의 부스트 버전을 설치하고 몇 개의 심볼릭 링크를 업데이트하여 "기본"버전을 선택할 수 있습니다. –