본문 바로가기

Robotics/Software Tech.

ubuntu 13.10 + eclipse(kepler) + boost 1.55.0 설치 및 사용



1. Ubuntu 13.10에 boost c++ library 1.55.0 설치 방법


[참고] http://cccob.blogspot.kr/2013/09/boost-1304-boost-153.html


1.53.0 버젼과 설치방법이 다르지는 않으니.. 위 블로그 내용을 참조.




2. Eclipse Kepler에 boost 설정


(1) 일단 본인은 1.54.0버젼 부터 추가된 boost.log 를 사용하려고 한다.


이클립스에서 c++ 프로젝트를 생성하고 cpp 파일에 다음 샘플 코드를 추가했다.


#include <iostream>

#include <boost/log/core.hpp>

#include <boost/log/trivial.hpp>

#include <boost/log/expressions.hpp>

namespace logging = boost::log;

using namespace std;

void SetFilter() {

  logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);

}

int main () {

  cout << "hello, world" << endl;

  SetFilter();

  BOOST_LOG_TRIVIAL(trace) << "A trace severity message";

  BOOST_LOG_TRIVIAL(debug) << "A debug severity message";

  BOOST_LOG_TRIVIAL(info) << "An informational severity message";

  BOOST_LOG_TRIVIAL(warning) << "A warning severity message";

  BOOST_LOG_TRIVIAL(error) << "An error severity message";

  BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";

}



(2) 환경 설정


다른건 없다.


boost가 설치된 include path를 등록해주면 된다.


- C/C++ Build > Settings > GCC C++ Compiler > Dialect > Lnaguage Standard를 ISO C++ 11로 설정한다.

- C/C++ Build > Settings > GCC C++ Compiler > Includes에 Include paths에 Boost path를 추가한다. (본인은 /usr/local/boost_1_55_0) 

- C/C++ Build > Settings > GCC C++ Linker > Libraries에 pthread, boost_log, boost_system, boost_thread의 순서로 설정한다.



이상하게도, link 할 라이브러리의 순서가 바뀌니 에러가 난다.. 그렇다고 하나라도 빠지면 또 에러나고..

이유를 모르겠다.




--------------------------------------------
(4. 23일 추가)

boost 라이브러리를 본인은 static이 아닌 shared로 사용하려고 한다. (즉, 실행파일에 포함시키는게 아니라, 별도의 라이브러리로 가지려고 하는것이다)
그리고, 멀티쓰레딩을 지원하려고 한다.

그럴경우에 컴파일 옵션을 다음과 같이 주었다.

$ sudo ./bjam --layout=versioned variant=debug,release link=shared threading=single,multi

일단 위 옵션의 의미는 http://cdecl.tistory.com/290 블로그 글을 참조.
--layout 옵션을 주지 않은 상태에서는 

Duplicate name of actual target:` ~~~~

이런 에러를 시작으로 몇개의 에러가 발생한다. 아마 동일 이름의 파일이 있다는 소리? (그럴지도.. 본인이 QT5 를 설치하니 boost 라이브러리가 종속적으로 같이 설치되던데..)