2009-10-13 2 views
1

나는 작업하고있는 프로젝트를 위해 Boost :: Serialization 라이브러리를 시험해보고 싶었다. 나는 또한 리눅스에서 프로그래밍에 익숙해 지려고 노력하고있다. 나는 기본 위치에 부스트를 설정했다. 필자는 그들이 제공하는 명령 행 인수로 here을 제공하는 테스트 파일을 컴파일하려고 시도했지만 정상적으로 작동했습니다. 이 예제에서는 .a 파일을 사용합니다.Boost에 연결할 때 .a 또는 .so를 사용하는 방법을 아는 방법은 무엇입니까?

그런 다음 일련 화 페이지로 이동하여 serialization demos 중 하나를 실행 해 보았습니다. 나는 파일 이름을 바꿔 빼고 libboost_regex.a 대신에 libboost_serialization.a와 연결하는 것을 제외하고는 기본적으로 같은 명령을 실행했다. 그러나 나는 많은 오류가있다. 다른 옵션으로 재생하고 디렉토리를 두 ​​번 확인한 후에 .a 파일을 .so 파일로 대체하여 마침내 작동하게했습니다.

g++ /usr/local/lib/libboost_serialization.so sertest.cpp -o sertest 

하는 방법은 운영자와 파일에 링크 한 예를 들어 와서 다른에 나는 .so를에 연결했다 : 마지막으로 나를 위해 일한 것을 그냥 참조

이했다?

+1

명령 줄에서 직접 라이브러리를 지정하는 대신 라이브러리 검색 경로에 대해'-l' 옵션을 사용하지 않아야합니다. –

+0

주어진 예제에서 그들은 $ C++ -I path/to/boost_1_40_0 example.cpp -o example \ ~/boost/stage/lib/libboost_regex-gcc34-mt-d-1_36.a 을 사용합니다. . – Alex

답변

4

정적으로 링크 할 때 라이브러리 및 오브젝트 파일을 지정하는 순서가 중요하기 때문에. 특히 라이브러리는 심볼을 사용하는 오브젝트 파일 다음에 언급되어야합니다.

+0

아, 고마워. 그게 내 문제를 일으킨 것이 틀림 없어. – Alex

관련 문제