Boostのビルド - スタティックライブラリを生成

dylibを要求してしまう

下記のようにビルドしてしまうとlibboost_thread-xgcc42-mt.aをリンクしても
実行時にdylibを要求してしまう。

bjam --toolset=darwin
libboost_thread-xgcc42-mt.aをリンクした場合の実行結果
dyld: Library not loaded: libboost_thread-xgcc42-mt-1_39.dylib
  Referenced from: /Users/kuru/Documents/00_Atotok/11.atotok-dev/13.Projects/CppCmdTest/build/Debug/CppCmdTest
  Reason: image not found
sharedlibrary apply-load-rules all
データフォーマッタが一時的に使用できなくなっています。“続ける”の後で再試行します。(Cannot call into the loader at present, it is locked.)
warning: Couldn't find minimal symbol for "_sigtramp" - backtraces may be unreliable
Cannot access memory at address 0x0
Cannot access memory at address 0x0


環境変数のDYLD_LIBRARY_PATHにライブラリのパスを設定してターミナルから実行すると正常に動作するが
dylibは使いたくないので、Boostをビルドしなおしてやってみる。

スタティックライブラリを生成


Boostを下記のようにビルドしてこれをプロジェクトに追加して実行すると実行時にdylibは要求しなくなる。
ビルドに時間がかかるのでthreadのみビルドするように指定して、boost::threadが動作することを確認した。

bjam --toolset=darwin --with-thread  link=static runtime-link=static


ビルドして出来た、libboost_thread-xgcc42-mt-s-1_39.a をリンクするとdylibは要求しなくなる。


下記の環境で確認した。

boost_1_39_0
boost_1_40_0


あとはUniversal Binaryをどうすれば良いか?