2014-04-25 3 views
0

TravisCI에서 부스트 종속 프로젝트를 작성하려고합니다. 이 the g++ command를 실행하면 :라이브러리를 포함하고 있어도 부스트 링크 오류가 발생합니다.

data_parser.cpp:(.text+0x136a): undefined reference to `boost::system::generic_category()' 

을뿐만 아니라 내가 g++ 명령 -lboost_system을 포함하고, 또한 /usr/lib/libboost_system.so exists 알고 :

g++ -Wall -L/usr/lib -fopenmp -lboost_system -lboost_filesystem -o bin/test obj/data_parser.o obj/hmm.o obj/test.o 

this linking error을 가져옵니다.

이것은 g ++ 4.6.3이 적용된 Ubuntu/Linaro 4.6.3-1ubuntu5 시스템에 있습니다.

sudo apt-get install libboost-dev libboost-filesystem1.46-dev libboost-iostreams1.46-dev libboost-system1.46-dev 

되지 않는 이유는이 링크를 올바르게 : 나는 함께 부스트 라이브러리를 설치?

+4

.o 파일 뒤에 boost *에 대해 -l 옵션을 넣습니다. 그것은 링커의 것입니다 – Petesh

답변

2

링커 명령에서 오브젝트 파일 다음에 라이브러리를 넣으십시오.

개체와 라이브러리는 순서대로 연결됩니다. 라이브러리 코드는 현재 링크 된 객체의 참조를 해결하는 데 필요한 경우에만 링크됩니다. 먼저 처리하면 처리되지 않은 참조가 없으므로 코드가 링크되지 않습니다.

+0

감사합니다! 나는 g ++에서 작동했기 때문에 버려졌다. - boost 파일이 * .a 파일 이었지만 g ++ - 4.6 및 * .so 파일이 아니었기 때문에 4.8 이었기 때문에 새로운 버전에서 변경되었을 수있는 것이 있는가? 또는 파일 형식과 관련이 있습니까? – aaronstacy

관련 문제