레이블이 boost인 게시물을 표시합니다. 모든 게시물 표시
레이블이 boost인 게시물을 표시합니다. 모든 게시물 표시

build boost

# boost 최신 파일 다운
wget https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz

# 또는
curl -OLv https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz

# 압축풀고 bootstrap.sh 실행
tar zxvf boost_1_62_0.tar.gz
cd boost_1_62_0/
./bootstrap.sh

# b2, bjam 등의 생성되며, b2 에 옵션 프로퍼티 타겟으로 빌드 후 설치
# b2 [options] [properties] [targets]
# target : install
# option : /usr/local에 설치(default)
# properties : gcc컴파일러, c++11사용, 디버그, 64비트머신, 멀티쓰레드
sudo ./b2 --prefix="/usr/local" toolset=gcc cxxflags="-std=c++11" variant=debug address-model=64 threading=multi install

# 타겟 파일 삭제
# 옵션 설명은 ./b2 --help
./b2 --clean-all

# 라이브러리 경로 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

# 참고
http://www.boost.org/build/doc/html/bbv2/overview/invocation.html
http://stackoverflow.com/questions/18452723/change-boost-build-jamfile-for-c11-support

#####

# 패키지 관리자를 이용한 boost 설치
# centos
sudo yum install boost boost-devel

# ubuntu
sudo apg-get install libboost-all-dev

build MongoDB C++ Client

[윈도우 빌드]
boost : http://sourceforge.net/projects/boost/files/boost-binaries/1.42.0/
python : http://www.python.org/download/
scons : http://www.scons.org/
SpiderMonkey : http://www.mongodb.org/download/attachments/1474760/js.zip
mongodb source : http://www.mongodb.org/downloads
mongovue: http://www.mongovue.com/downloads/

vcvarsall.bat 위치를 환경변수에 추가 (C:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\)
scons 위치를 환경변수에 추가(C:\Python26\Scripts)
콘솔에서 visual c++ 컴파일러를 사용하기 위해서 vcvarsall.bat 실행
D:\ysoftman\Project\mongodb-src-r2.0.2\js 에 SpiderMonkey 압축 풀기
D:\ysoftman\Project\mongodb-src-r2.0.2\SConstruct 에서 find_boost() 부분 수정
    def find_boost():
        for x in ('', ' (x86)'):
            #boostDir = "C:/Program Files" + x + "/boost/latest"
     boostDir = "D:/ysoftman/Project/mongodb-src-r2.0.2/boost_1_42_vs2008_partial_prebuilt/"

mongoclient.lib 생성(release 버전 32bit 용으로)
D:\ysoftman\Project\mongodb-src-r2.0.2\scons mongoclient --release --32

SConstruct 파일의 /MDd --> /MTd 로 수정
mongoclient.lib 생성(debug 버전 32bit 용으로)
D:\ysoftman\Project\mongodb-src-r2.0.2\scons mongoclient --dd --32
D:\ysoftman\Project\mongodb-src-r2.0.2\client\*.h 헤더파일 사용

[빌드 후 신경써야 할것들]
멀티바이트환경에서는 log.h 파일의 399 line LPTSTR --> LPWSTR 로 변경
pch.h 파일 위부분에 보면 에 다음의 내용이 있다.
#define WIN32_LEAN_AND_MEAN
# include <winsock2.h> //this must be included before the first windows.h include
# include <ws2tcpip.h>
# include <wspiapi.h>
# include <windows.h>
WIN32_LEAN_AND_MEAN 는 중복되는 파일을 줄여 주는 역할로 처음에 컴파일된 파일이후에 같은 내용을 무시하도록 한다.
MongoDB 는 윈속2(windosock2.h) 를 사용하지만 windows.h 에는 기본적으로 윈속1(winsock2)를 사용한다.
따라서 WIN32_LEAN_AND_MEAN 를 정의하고 아래처럼 winsock2.h 가 windows.h 보더 먼저 오게된다.
그리고 .pch.h 파일을 가장 먼저 컴파일되어야 한다.

[리눅스 빌드]
1. mongodb 압축 풀기
   unzip mongodb-src-r2.0.4.zip
2  필요한 툴 설치
   sudo yum install scons gcc-c++ glibc-devel boost boost-devel pcre-devel js-devel readline-devel
3. libmongoclient.a 생성(참고로 mongodb 빌드시:  scons all)
   scons mongoclient -j 8