ブースト: http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z
(両方とも D: ドライブ上)
以下でコンパイルされた boost_regex:
b2 --prefix=D:\boost toolset=gcc --with-regex --layout=tagged release
コード:
#include <boost\regex.hpp>
int main() {
boost::regex reg("[a-z]+");
}
パラメータでコンパイル:
g++ -I "d:\boost" -Os -o test.exe test.cpp -static -L d:\boost\stage\lib -lboost_regex-mt
エラー:
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTVN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE[__ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail10clone_baseE[__ZTSN5boost16exception_detail10clone_baseE]' has different size
d:\boost\stage\lib\libboost_regex-mt.a(regex.o): duplicate section `.rdata$_ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE[__ZTSN5boost16exception_detail19error_info_injectorISt13runtime_errorEE]' has different size
コンパイルは問題ありませんが、より複雑なコードで動作するかどうかはまだテストしていません。スイッチを削除する-Os
とエラーは解消されますが、アプリのサイズはその 2 倍になります。
サイズの最適化も含めて Boost をビルドする必要があるかもしれませんが、b2 コマンド ラインでこのオプションをどこに渡すかわかりません。