2009-08-14 5 views
0

업데이트 : 컴파일하는 방법을 찾았습니다. 아래를 참조하십시오.cygwin을 사용하여 부스트 프로그램을 컴파일하는 데 문제가 있습니다.

안녕하세요, cygwin에서 부스트 프로그램을 컴파일하는 데 문제가 있습니다. cygwin 프로젝트의 setup.exe에서 기본 boost 및 g ++ 패키지를 설치했습니다.

내 리눅스 시스템에서

, 내가 사용하는 프로그램 reg.cpp을 컴파일 할 수있는 사항은 다음과 같습니다

g++ -I/usr/include/boost-1_33_1 -lboost_regex-gcc-mt -o reg reg.cpp 

문제가 있다는 것입니다 : Cygwin에서에

g++ -I/usr/include/boost -lboost_regex -o reg reg.cpp 

내가이 조금을 편집해야 cygwin 버전은 링커가 백만 개의 정의되지 않은 참조 오류를 발생하게합니다. 부스트 테스트 프레임 워크 라이브러리를 사용해도 똑같은 일이 발생합니다.

링커에서 boost_regex-gcc-mt를 찾았지만 포함 파일과 일치하지 않는 것으로 보입니다.

내가 컴파일하려면 솔루션 here을 발견 컴파일 방법

undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)' 

, 나는 다음과 같은 한 : 다음은 첫 번째 링커 오류의 포스트에 따르면

g++ -I/usr/include/boost-1_33_1 reg.cpp -o reg -lboost_regex-gcc-mt 

, 그것은 뭔가있다 링커 순서와 관련있다. cygwin에서이 문제가 왜 중요하지만 현대 리눅스에서는 그렇지 않은지 아무도 모른다.

답변

2

링커는 전통적으로 오른쪽에서 왼쪽으로 라이브러리를 처리합니다. 대부분의 링커는 라이브러리 배치에 신경 쓰지 않지만 cygwin은 그렇게합니다. 그래서 boost_regex 라이브러리가 끝나야합니다. 당신이 부스트 문서의 예 (Getting Started)를 보면

0

:

Cygwin에서의 명령은 다음과 같아야합니다

g++ -c example.cpp 
g++ -o example.exe example.o -lboost_regex-mt 

(라이브러리가 CPP 파일 후에 포함되어 있습니다.) 잘못된 :

g++ -o example.exe -lboost_regex-mt example.o 
관련 문제