2004년 11월 16일 화요일

Boost - Portable C++ source libraries

work well with the C++ Standard Library
http://www.boost.org/

Document
http://www.boost.org/libs/libraries.htm

환경 : RedHat 9.0

boost-jam 다운로드
http://prdownloads.sourceforge.net/boost/boost-jam-3.1.10-1.i386.rpm?download

boost-jam 설치
sudo rpm -Uvh boost-jam-3.1.10-1.i386.rpm

boost 다운로드
http://prdownloads.sourceforge.net/boost/boost_1_32_0.tar.gz?download

boost 설치
cd /svc/neo/local/src
tar xzvf boost_1_32_0.tar.gz
cd boost_1_32_0
export PYTHON_LIB_PATH="/usr/lib/python2.2/config"
export PYTHON_INCLUDES="/usr/include/python2.2"
bjam "-sTOOLS=gcc" --prefix=/svc/neo/local/boost_1_32_0 install
설치 소요시간 : 30분(Intel Xeon 2.8 Dual 서버, Hyperthreading을 켰을 때 - CPU 4개로 보임)

include path
-I/svc/neo/local/boost_1_32_0/include/boost-1_32

library path
/svc/neo/local/boost_1_32_0/lib

Redhat 7.3의 경우
1. glibc 2.2.5가 깔려있기 때문에 boost-jam-3.1.4를 설치해야 함.
2. python 1.5만 깔려 있으므로 python 2.2를 설치 해야 함.
ftp.sayclub.com:/pub/Linux/redhat/linux/7.3/en/os/i386/RedHat/RPMS/python2-*
(python2-2.2-16.i386.rpm
python2-devel-2.2-16.i386.rpm
python2-docs-2.2-16.i386.rpm)
sudo rpm -Uvh python2-*

설치시 실패 혹은 통과한 부분이 72개 나오고, 설치 후 application의 컴파일이 안됨.
(기본 헤더파일인 locale, ostream 등. include 파일이 없다고 나옴.
locale.h, ostream.h 등을 symbolic link 건 후에도 다른 에러가 계속 남.)
-----------------------
test code
$ cat Makefile
CXXFLAGS=-W -Wall -g
INCLUDES=-I./ -I/svc/neo/local/boost_1_32_0/include/boost-1_32
LIBS=-L/svc/neo/local/boost_1_32_0/lib

all: test1

test1: test1.cpp
        $(CXX) $(CXXFLAGS) $(INCLUDES) $(LIBS) $@.cpp

$ cat test1.cpp
#include <iostream>
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"

using namespace std;
using namespace boost;

int main()
{
// 문자열 split 예제

    string test1 ="Hello, wordl!, hmm";

    vector<string> result;
    split(result, test1, is_any_of(" "));

    vector<string>::iterator iter = result.begin();
    vector<string>::iterator iter_end = result.end();

    for (; iter != iter_end; iter++) {
        cout << *iter << endl;
    }
}

. Visual Studio .NET 2003에서 boost 사용하기
. 다운로드
http://www.boost.org/
-> download -> boost-jam-3.1.11-1-ntx86.zip, boost_1_33_1.exe

. 압축풀기
boost-jam-3.1.11-1-ntx86.zip를 푼다.
c:\lib에 boost_1_33_1.exe를 푼다.(self-extracted file)
(c:\lib\boost_1_33_1이라는 디렉토리가 생기고 풀린다.
bjam.exe를 c:\lib\boost_1_33_1\ 로 복사한다.

. 설치
Visual studio의 cmd 실행
C:\lib\boost_1_33_1>"c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat
bjam -sTOOLS=vc-7_1 --without-python stage
=> .NET 2002의 경우 vc7 .NET 2003의 경우 vc-7_1
(탐색기에서 모든 *.jam 파일을 검사하여 알아냈음)
.NET 2003에서 vc7으로 컴파일하면 컴파일은 잘 되지만
나중에 사용할 때 lib 파일을 다른 것으로 찾아서 실행이 안됨.
=> libboost_wave에서 error : buffer overrun detected가 몇 번 남
=> failed updating 6 targets
skipped 24 targets
updated 3734 targets
=> install, stage 옵션을 안주면 컴파일만 하고 include, lib 디렉토리가 안 생김.
install 옵션을 주면 c:\boost라는 디렉토리를 만들고 복사
stage 옵션을 주면 c:\lib\boost_1_33_1\stage에 만듬

. 이용
Project -> Property -> C/C++ -> General -> Additional Include Directories -> C:\lib\boost_1_33_1
Linker -> General -> Additional Library Directories -> C:\lib\boost_1_33_1\stage\lib

. 참고
http://blog.naver.com/chalgoguma?Redirect=Log&logNo=100005083301
http://blog.naver.com/redsusia?Redirect=Log&logNo=60002340337

댓글 없음:

댓글 쓰기