正则表达式在释放模式升压库链接警告“重复部分都有不同的大小”使用的MinGW-W64链时(Regex

2019-06-26 11:54发布

当在释放模式连接我的项目,我收到以下警告:

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库与不同的选项编译,但我不知道如何找到差异(升压没有输出在生成过程中这些选项)。

为了编译升压为在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 = ' - 子卡' ....

也许,确保为我做的这个项目可以解决问题(特别是关于作为链接的问题提出优化参数)来传递相同的参数。

Answer 1:

你的编译器采用不同的选项编译:)编译在Windows结果在Linux上的库和程序的情况下有一个同名。数据段,但他们是不一样的尺寸。 这在理论上是有趣的,因为一个数据段是可写的,但在实践中,它不应该的问题。 除非有证据表明这会导致一个问题,其中我不知道,你可以放心地抑制警告; 我不知道你怎么把它赶走,但。



Answer 2:

最近,我遇到了这个问题(即连接器警告“重复部分都有不同的大小”)试图编译使用Windows MinGW的升压时。

我的问题是,我编译我的应用-std=c++14 ,但在编译的刺激时,我并没有具体规定方言标志(其默认为-std=c++98的G ++ 5.3.0)。 添加方言标志-std=c++14时编译升压解决了这个问题对我来说。 看到这个答案就如何编制的刺激时,设置CXXFLAGS一个交代。

我相信我的解决方案可能会为你(您的应用程序编译工作过-std=c++0x ,但升压没有提供任何方言标志)。 虽然我6年太晚了,我会在这里留下我的回答别人谁碰巧绊倒,在这个问题上。



文章来源: Regex Boost library linking in release mode warns “duplicate section has different size” when using mingw-w64 toolchain