Библиотека ссылок Regex Boost в режиме деблокирования предупреждает, что "дублирующаяся секция имеет разный размер" при использовании инструментальной привязки mingw-w64

При связывании моего проекта в режиме выпуска я получаю следующее предупреждение:

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

Я подозреваю, что причиной может быть то, что библиотека boost скомпилирована с различными параметрами, чем я использую для моего проекта, но я не знаю, как найти разницу (boost не выводил эти параметры во время сборки).

Чтобы скомпилировать boost для win32 на Ubuntu 12.04, я использовал эту процедуру:

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

Те тесты, которые я указываю, что регулярные выражения работают нормально, но все же я хотел бы разрешить предупреждение.

ИЗМЕНИТЬ

Я обнаружил, что дополнительные опции для компилятора boost могут быть добавлены с помощью аргумента cxxflags = bjam.

Пример: bjam cxxflags = '- fPIC'....

Возможно, чтобы убедиться, что переданы те же аргументы, что и я, для проекта, можно решить проблему (особенно аргументы, связанные с оптимизациями, как это предлагается в связанном вопросе).

Ответ 1

Ваши компиляторы были скомпилированы с различными параметрами:) Компиляция библиотеки в Linux и программа в Windows приводят к ситуации, когда есть сегмент с одинаковым именем .data, но они не имеют одинакового размера. Теоретически это может быть интересно, поскольку сегмент данных доступен для записи, но на практике это не имеет значения. Если нет доказательств того, что это вызывает проблему, о которой я не знаю, вы можете безопасно подавить это предупреждение; Я не знаю, как вы это сделаете, хотя.