gpt4 book ai didi

boost - 使用大小优化(-Os)编译boost_regex时出现 'duplicate section'错误

转载 作者:行者123 更新时间:2023-12-04 03:08:37 25 4
gpt4 key购买 nike

编译器:http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev6.7z

boost :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命令行中将此选项传递到哪里。

最佳答案

在我的情况下,boost 1.58在内部使用“-march = i686”进行编译,但我的代码不是。在我的项目中添加“-march = i686”摆脱了所有“重复部分”。

经验教训:始终不遗余力地确保所有库和主项目都使用相同的编译器选项进行编译。

关于boost - 使用大小优化(-Os)编译boost_regex时出现 'duplicate section'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com