Mac OS X 10.9でboostを手動ビルドする方法

標準のclang4.3を用いる場合,boostのコンパイルでエラーが発見されている.

参考1: https://trac.macports.org/ticket/42282

 

そこでgcc4.8を用いてboostをビルドしちゃう.

参考2: http://seiya-kumada.blogspot.jp/2013/12/macboost-1550gcc-482.html

 

参考2中ではMacPortsを使っているが,僕はHomebrew派なのでこちらのやり方をば.

$brew tap homebrew/versions

$brew install gcc48  

homebrewにtapコマンドなるものが増えていて驚いた.

公式以外で公開されているフォーミュラを使えるようになるみたい.

ちなみにinstall gcc48すごく時間かかります.手元のMBAで45minくらい.

参考3: http://tukaikta.blog135.fc2.com/blog-entry-204.html

 

さて,gcc48が無事コンパイルできたわけですが,gccと打ってももちろん4.8のgccは起動しません.

参考4にしたがってエイリアスを張っておきましょう.

これをしないと,そもそものboostを導入するという目的にたどり着けません.

参考4: http://d.hatena.ne.jp/houmei/20131008/1381183331

 

あとはいつもどおり,公式( http://www.boost.org/ )からboostのソースコード類をダウンロード(記事執筆時ではboost_1_55_0.tar.gzが最新)

$tar xzvf boost_1_55_0.tar.gz   //伸張,展開

$cd boost_1_55_0

$./boostrap --prefix=PATH_TO_INSTALL   //PATH_TO_INSTALLにはインストールしたいディレクションパス

$./b2 install -j4 --prefix=PATH_TO_INSTALL   //jオプションは並列コンパイルに使用するコア数

 

今回は参考5のマルチスレッドプログラムをサンプルとして拝借

参考5: http://www.yukun.info/blog/2008/07/boost-thread-create-run.html

$g++ thread.cpp -I ./include ./lib/libboost_thread.a ./lib/libboost_system.a 

Iオプションでincludeディレクトリや,リンクするファイルを指定

( centosでは$g++ thread.cpp -I ./include -lboost_thread-mt -lboost_system-mtとしていた.なぞ…) 

訂正: centosではg++ thread.cpp -I ./include/boost -lboost_thread-mtで済みました.