Mac OS X で boost::test するときは <code>#define BOOST_TEST_DYN_LINK</code> が必須

Mac OS X はスタティック リンクをサポートしていないため,boost::test するときは #define BOOST_TEST_DYN_LINK が必須のようです.

経緯

boost.test をちょっと試そうと思っていくつかちょっとだけ実験してた.

参考にしたのはとりあえずここらへん.

で,スタティック リンクでも試そうと

#define BOOST_TEST_DYN_LINK

を消して,

% g++ test.cpp -lboost_unit_test_framework test.cpp -static

としたのだけど,

ld: library not found for -lcrt0.o
collect2: ld returned 1 exit status

というエラーがでてコンパルができなかった.

ちょっと調べてみると,以下のようなことが公式に宣言されてた.

Mac OS X では、ユーザバイナリの静的なリンクはサポートされていません。

Mac OS X-lcrt0.o でエラーがでたら,素直にダイナミック リンクにしてあげましょう.