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