installing boost with gcc on andLinux

http://d.hatena.ne.jp/janus_wel/20100928/1285678622 で msvc の環境を整えたので gcc のほうを。環境は andLinux 2.6.22.18-co-0.7.4 gcc 4.3.3 。 apt でいれる方法もあるんだけど andLinux だとちょいと古い。

まずいろいろ package が必要なので root で以下の command を叩く。

  • apt-get install bzip2 libbz2-dev zlib1g-dev
  • apt-get install libexpat1-dev libicu-dev

もひとつ、 bjam の最新版 binary がまだないみたいなので自分で build する -> http://www.boost.org/doc/libs/1_44_0/doc/html/jam/building.html

そうすると ~/boost-jam-3.1.18/bin.linux86/ 以下に bjam という名前で実行 file ができているはず。これで準備完了。

で、本筋なんだけど以下を見ながらやる、よりは google で似たようなことやってるひと探すのが早い。

  1. cd
  2. wget -O boost_1_44_0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.44.0/boost_1_44_0.tar.bz2/download
    • http://www.boost.org/users/download/ から source 一式をもらってくる。 subversion で checkout してもいいけど時間かかりすぎるのでお好みで。 command の中の 1.44.0 とか 1_44_0 てのは boost の version 。ちなみに file size が小さいからという理由でうちは tar.bz2 のほうを選んでる。
  3. tar xjvf boost_1_44_0.tar.bz2
  4. cd boost_1_44_0
  5. ln -s ~/boost-jam-3.1.18/bin.linux86/bjam ./
    • bjam は単体で動くから path 通ってるところにおけば問題ないと思うんだけど使い捨てる気満々なので symbolic link を張って対処。
  6. ./bjam --build-dir=/tmp/boost-build --prefix=/usr/local --toolset=gcc --without-python --without-mpi install
    • build 時の作業 file を /tmp/boost-build に出力 。
    • hpp や so, a を /usr/local 以下に配置する。
    • 使う compiler は gcc
    • python library はいらないので compile しない。 compile しようとすると error がでまくったので多分何か package が足りてない。
    • mpi library もいらないので compile しない。というか何する library なのかわかってない。
    • できた物を --prefix で指定した directory 以下に copy して使える状態にする。
    • かなり待つ。 hpp の copy だけでもけっこうかかるから http://www.nicovideo.jp/tag/%E3%82%A8%E3%83%AB%E3%82%B7%E3%83%A3%E3%83%80%E3%82%A4 でも見て時間をつぶすのがオススメだが大丈夫か ?
  7. rm -rf /tmp/boost-build
  8. rm -rf ~/boost-jam-3.1.18
  9. rm -rf ~/boost_1_44_0
    • 環境もすぐ構築できるので後先考えずに eliminate 。

最後に環境変数の設定を .bashrc や .zshrc あたりに書いて終了。 csh 系は知らん。

# environment variables
export CPLUS_INCLUDE_PATH=/usr/local/include
export LD_LIBRARY_PATH=/usr/local/lib

これで問題なく使うことができる。ただ gcc は自動で link する file を推定したりしてくれないので build 時に -l option を使って指定する。たとえば boost::regex を使ってるなら以下のように。

  • g++ -lboost_regex main.cpp