マイナス×マイナス

メンヘラ人工知能エンジニアのブログ/ 博士(工学)

boost 1_37_0 を Ubuntu 8.04 上でビルド

boost::exceptionを使いたかったので, boost 1_37_0 を Ubuntu 8.04 上でビルドしてみた.本当は exceptionだけならビルドする必要はない.まぁ,どうせなので….少しハマったので方法をメモしておく.gcc は ver. 4.2.4 を使っている.

基本的には,公式の Getting Started on Unix Variants を参考にする.

準備

まず,必要なライブラリをインストールしておく.ここにあげたのは私が気づいたものだけなので,人によっては他のライブラリも必要かもしれない.libbz2-dev 以外はオプショナルだ.

  • libbz2-dev
    • 必須.iostreams とかに必要.入れないとビルドエラーになる.
  • libexpat1-dev
    • オプショナル.expat 自体は,XMLパーサーライブラリ.グラフ理論用のライブラリgraph を使わないなら不要.
  • libicu-dev

次に,最新の bjam を入手する.ubuntuリポジトリに入っている bjam ではうまくビルドできなかった(設定がわるいだけかもしれない). SourceForgeboost-jamのDownload から,最新の bjam のバイナリをダウンロードする. 今回は, 3.1.17を使った.

boost_1_37_0 のビルド

まず,SourceForgeboost 1_37_0のダウンロードのページから,圧縮ファイルをダウンロードして,展開する.

ファイルを展開したディレクトリ(boost_1_37_0)に移動し,以下のコマンドを入力する.--prefix にインストールのパスを --build-dir に中間ファイルを出力するディレクトリへのパスを書く.不要なライブラリは --without-library-nameで外すことができる.ライブラリの名前は,bjam --show-libraries で確認しよう. 今回は MPI のみを外した.

$ sudo EXPAT_INCLUDE=/usr/include  EXPAT_LIBPATH=/usr/lib \
 [ダウンロードしたbjamへのパス]/bjam -sHAVE_ICU=1 --without-mpi \
 --prefix=/usr/local --build-dir=/tmp/boost-build --toolset=gcc install
$ rm -rf /tmp/build-boost

ちなみに,コンパイル時間は, Core2Duo E6600 (2.4GHz) のマシンで,約 17分だった.以下はtime の出力だ.

969.87s user 34.31s system 98% cpu 17:02.92 total

追記: 環境変数 LD_LIBRARY_PATH に /usr/loca/lib が無い場合は追加する
追記: 1_38_0も同じ方法で OK.