1. 설치 하기..
BOOST LIBRARY 를 다운받는다.
현재 ( 2011. 7. 8 ) 최신 릴리즈는 1_46_1 이다. zip 파일을 다운받아서 원하는 곳에다가 압축을 푼다.
폴더 내에 내 구성이 다음과 같을 것이다.
이중에서, 위에서 선택된 bootstrap 을 이용해서 bjam 을 만들것이다. bjam 은 일종의 파서다. 사용자가 입력한 옵션을
파싱해서 입력된 옵션에 맞게 부스트 컴파일을 위해 각종 파일들을 세팅 해 준다.
이제 컴파일 할 대상 플랫폼이 무엇인지 결정하고, 그에 맞게 컴파일러를 고르면 된다. 아래 그림을 보자.
Visual Studio 2010은 크로스 컴파일러를 설치하면 이렇게 4가지 종류의 컴파일러를 제공한다.
– Visual Studio Itanium Cross Tools 명령 프롬프트(2010)
– Visual Studio x64 Cross Tools 명령 프롬프트(2010)
– Visual Studio x64 Win64 Tools 명령 프롬프트(2010)
– Visual Studio 명령 프롬프트(2010)
Itanium Cross 컴파일러는 X86 시스템에서 IA64 코드를 생성할 수 있도록 도와준다.
x64 Cross 컴파일러는 X86 시스템에서 X64 코드를 생성할 수 있도록 도와준다.
x64 Win64 컴파일러는 X64 시스템에서 X64 코드를 생성할 수 있도록 도와준다.
마지막 4번째는 기본적으로 제공되는 컴파일러로 X86 시스템에서 X86 코드를 생성할 수 있도록 도와준다.
자신의 시스템에 맞게 컴파일러를 고르면 된다. X64(AMD64, EMT64) 시스템은 4가지 모두를 사용할 수 있지만
X86 시스템에서는 x64 Win64 컴파일러를 사용 할 수 없다.
자신의 시스템에 맞는 컴파일러를 선택한 뒤 %BOOSTROOT%(부스트 루트 폴더, 이하 %BOOSTROOT% 라 부르겠다. )
로 이동해서 bootstrap 을 실행시키면 해당 시스템(아키텍쳐에) 맞게 %BOOSTROOT%에 bjam.exe 응용프로그램이
생성된다. 여기서 생성된 bjam은 x86용 응용프로그램이더라도 x64용 boost library 를 생성할 수 있다. bjam 은 단지
세팅 툴이다. boost library를 빌드 할때 쓰는 컴파일러만 x86 to x64 크로스 컴파일러면 된다.
생성된 bjam을 이용해서 부스트 라이브러리를 컴파일 해 보자. 컴파일러를 실행한 뒤 %BOOSTROOT% 로 이동한다.
여기서는 x86 to x64 Cross 컴파일러를 사용하겠다. 본인의 운영체제가 x64 Windows 라면 x64 Win64 컴파일러를 이용하면
부스트를 빌드하는데 걸리는 시간을 절약 할 수 있다.
boost 는 헤더만 추가해도 사용할 수 있는 라이브러리와 그렇지 않은 라이브러리로 나뉘어진다. –show-libraries 옵션을
이용해 확인 할 수 있다. 우리가 boost 를 컴파일 하는 이유는 이런 라이브러리들을 사용하기 위함이다.
boost library 는 두가지 방법으로 설치 할 수 있다. 만약, 처음 설치한다면 헤더 파일과 라이브러리 파일이 필요하므로
두가지를 모두 설치하는 Install 방법을 이용하면 된다. 두번째 방법은 라이브러리 파일만 빌드 하는 방법인데, 이미 이전에
Static 빌드로 부스트를 Install 해 놓았고 새로이 Shared 라이브러리만 필요하다면 Stage 방식으로 라이브러리만 빌드하면 된다.
두가지 방식의 옵션에 관해서는 아래 링크를 참조하면 된다.
bjam 의 옵션은 다음의 링크에서 확인할 수 있다.
x86 to x64 크로스 컴파일러를 선택했으므로 컴파일 하기위한 bjam 옵션에 대해서 알아보자.
–toolset=msvc-10.0
: Visual Studio 2010 을 이용해 컴파일함을 알려준다. 다른 버전을 사용할 경우에는 그에 맞는 버전을 지정하면 된다.
–architecture=x86
: 아키텍쳐를 지정한다. x86이나, x64라면 디폴트 값으로 x86으로 지정되고 IA64의 경우에는 –architecture=ia64
address-model=64
: 주소 모델을 지정한다. x64로 빌드할것이므로 64 를 지정한다. 지정안한다면 32가 디폴트 값으로 사용된다.
link=static
: 어떤 형태로 빌드할 것인지 나타낸다. static(lib), shared(dll) 두가지 옵션이 있다. link=static,shared 로 둘다 지정도 가능
runtime-link=static,shared
: 사용하는 C – Runtime Library 를 어떻게 연결할 것인지를 나타낸다. 나는 둘 다 지정했다.
variant=release
: 빌드된 라이브러리가 릴리즈용인지, 디버그 용인지를 나타낸다. variant=release,debug 와 같이 지정도 가능.
–without=mpi
–without=python
: 부스트 라이브러리는 사용을 위해 또 다른 라이브러리가 이미 설치 되 있어야 하는 경우도 있다. MPI 가 그 경우.
나는 MPI와 파이썬을 사용하지 않으므로 둘 다 빌드하지 않겠다는 옵션을 주었다.
–stagedir=stage64_lib_release
: 빌드된 라이브러리들이 위치 할 폴더. %BOOSTROOT% %STAGEDIR% 에 생성된다.
stage
: Stage 옵션. 헤더파일을 제외하고 라이브러리만 생성한다.
-j 2
: 쓰레드를 이용해 동시에 몇개의 작업을 할 것인가, 이경우는 두개의 작업을 동시에 하겠다고 옵션을 주었다.
생성된 라이브러리는 아래와 같다.
생성된 부스트 라이브러리 네이밍에 대해서 알아보자.
boost
: 이 파일이 link=shared 옵션으로 생성된 DLL 파일임을 나타낸다. LIB 파일이라면 libboost 로 시작한다.
libboost
: 이 파일이 link=static 옵션으로 생성된 LIB 파일임을 나타낸다.
data_time
: 라이브러리 이름을 나타낸다
vc100
: 컴파일하는데 사용된 툴과 버전을 나타낸다. vc 10.0 버전을 사용하였다.
mt
: 이 멀티 쓰레드용 부스트 라이브러리임을 나타낸다.
s
: runtime-link=static 옵션으로 C – Runtime Library 가 static 으로 링크 되었음을 알려준다.
g
: variant:debug 옵션으로 C – Runtime Library 가 디버그 버전으로 링크 되었음을 알려준다.
d
: variant:debug 옵션으로 이 부스트 라이브러리가 디버거 버전으로 컴파일 되었음을 알려준다.
1_46_1
: 부스트 라이브러리의 버전을 알려줌
LIB 파일들을 정리해보면,
libboost_mt
: 멀티 쓰레드용 릴리즈 버전, C Runtime Library 는 shared 방식으로 링크됨. 비주얼 스튜디오 /MT 옵션용 라이브러리
libboost_mt_gd
: 멀티 쓰레드용 디버그 버전, C Runtime Library 는 shared 방식으로 링크됨. 비주얼 스튜디오 /MTd 옵션용 라이브러리
libboost_mt_s
: 멀티 쓰레드용 릴리즈 버전, C Runtime Library 는 static 방식으로 링크됨. 비주얼 스튜디오 /MD 옵션용 라이브러리
libboost_mt_sgd
: 멀티 쓰레드용 디버그 버전, C Runtime Library 는 static 방식으로 링크됨. 비주얼 스튜디오 /MDd 옵션용 라이브러리
내가 사용하는 옵션은..
c:boost_1_57_0>bjam –toolset=msvc-12.0 link=static runtime-link=static,shared variant=release,debug –architecture=x86 address-model=64 threading=multi stage -j8
이게 맞는 듯.
b2 -a –toolset=msvc-12.0 variant=debug,release link=static threading=multi runtime-link=static –architecture=x86 address-model=64 –stagedir=x64 -j8 stage