11

プロジェクトをリリースモードでリンクすると、次の警告が表示されます。

myProject-libs/release/libboost_regex-mt-s-1.50.0.a(cpp_regex_traits.o): duplicate section `.data$_ZZN5boost16cpp_regex_traitsIcE21get_catalog_name_instEvE6s_name[boost::cpp_regex_traits<char>::get_catalog_name_inst()::s_name]' has different size

ブーストライブラリがプロジェクトで使用しているものとは異なるオプションでコンパイルされていることが原因である可能性がありますが、違いを見つける方法がわかりません(ブーストはビルド中にこれらのオプションを出力しませんでした)。

Ubuntu 12.04でwin32のブーストをコンパイルするために、次の手順を使用しました。

tar jxf boost_1_50_0.tar.bz2
cd boost_1_50_0
./bootstrap.sh
echo "using gcc : 4.6 : i686-w64-mingw32-g++ : <rc>i686-w64-mingw32-windres <archiver>i686-w64-mingw32-ar ;" > user-config.jam
./bjam toolset=gcc target-os=windows --address-model=32 variant=release threading=multi threadapi=win32 link=static runtime-link=static --prefix=/opt/boost_1_50_0-release-static-windows-32 --user-config=user-config.jam -j 10 --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged install

私のプロジェクトでファイルをコンパイルするために、私は次のようなものを使用します

i686-w64-mingw32-g++ -march=corei7 -mfpmath=sse -m32 -Wall -fmessage-length=0 -I"/opt/boost_1_50_0-release-static-windows-32/include" -std=c++0x -O3 -g0 -DNDEBUG -I"myProject/src/cpp" -c -o myProject/build/release/src/cpp/myproject.o myproject/src/cpp/myproject.cpp

私が行ったテストでは、正規表現は正常に実行されていることが示されていますが、それでも警告を解決したいと思います。

編集

bjamのcxxflags=引数を使用して、ブーストコンパイラに追加のオプションを追加できることがわかりました。

例:bjam cxxflags='-fPIC'...。

たぶん、私がプロジェクトに行うのと同じ引数を確実に渡すことで、問題を解決できる可能性があります(特に、リンクされた質問で提案されている最適化に関連する引数)。

4

2 に答える 2