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は要求しなくなる。
下記の環境で確認した。