首页 > 编程语言 >C++ --- mingw编译提示too many sections…File too big

C++ --- mingw编译提示too many sections…File too big

时间:2022-11-26 11:24:55浏览次数:62  
标签:obj GNU many C++ 编译 too big bigobj

现象:

在Windows Qt下使用MingW编译,报错too many sections…File too big

当代码中使用了大量模板时,会导致编译出的OBJ文件巨大,编译器会报错,
  在MSVC下错误为 Fatal Error C1128
  在GNU C++下错误提示为 too many sectionsFile too big

原因:

这是因为默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的节。 这种情况不管指定哪个目标平台。

大多数模块将从来不会生成包含节数超过 65,536 的 .obj 文件。 但是,计算机生成的代码或大量使用模板库的代码可能需要可存放更多节的 .obj 文件。

解决方法:(参考:cmake:MSVC,GNU解决bigobj问题

编译时加上-bigobj    /bigobj 可将地址容量增加至 4,294,967,296 (2^32)。

对于Visual Studio,可以右击工程文件->属性 打开属性页,在配置属性->C/C++->命令行中的“其他选项”中加入-bigobj。

 对于cmake项目:

#CMakeLists.txt
if(CMAKE_COMPILER_IS_GNUCXX) #检查GNU是否支持-Wa,-mbig-obj include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-Wa,-mbig-obj" GNU_BIG_OBJ_FLAG_ENABLE) message(STATUS GNU_BIG_OBJ_FLAG_ENABLE=${GNU_BIG_OBJ_FLAG_ENABLE}) endif() add_executable(...) target_compile_options(RTPS_Show PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/bigobj> $<$<AND:$<CXX_COMPILER_ID:GNU>,$<BOOL:${GNU_BIG_OBJ_FLAG_ENABLE}>>:-Wa,-mbig-obj> )

 

 ps:上面的解决方法并没有解决我的问题。因为在Visual Studio下编译是没这个问题的,所以最后选择把编译器换成了msvc。

 

标签:obj,GNU,many,C++,编译,too,big,bigobj
From: https://www.cnblogs.com/linxisuo/p/16926976.html

相关文章

  • C++(二)(未完成)
    选择与循环选择语句if语句if(){ GRAM}else{ GRAM}switch语句switch(){ case常量表达式1: 语句序列1; break; case常量表达式2: 语句序列2;......
  • 《Learning to Resolve Alliance Dilemmas in Many-Player Zero-Sum Games》 2020-AAM
    学习解决多人零和博弈中的联盟困境总结:将两人的零和博弈扩展到多人零和博弈,并将多人零和博弈中的联盟问题转为社会困境问题用基于强化学习的方法进行解决。先是说明了一......
  • nginx socket() failed (24: Too many open files)
    访问量的增大,相应nginx连接数,以及打开的文件数,是需要调整的,不然就会报以下错误2019/10/1016:04:37[alert]364127#0:*11935302socket()failed(24:Toomanyopenfi......
  • failed to find Build Tools revision 22.0.1
    1.下载androidstdio工具:如下:2.下载对应的SDKtools.最好下载SDKzip.访问地址:https://www.androiddevtools.cn/3.选择SDKpath.将解压后的目录进行选择。删除原下载文件......
  • C/C++航空客运订票系统
    C/C++航空客运订票系统航空客运订票系统的设计与实现:本系统可以实现航空客运订票的主要业务活动。例如,浏览和查询航班信息、机票预订和办理退票等。(全部完成起评分“良好......
  • C++的字符串流
    sstream使用,注意clear和str("")#include<iostream>#include<sstream>#include<string>usingnamespacestd;intmain(){stringstreamss;ss.put......
  • C++ 设计模式 目录
    设计模式推荐阅读ohmyfish.net​未来更新会先在​​ohmyfish.net​​更新,等到一定规模会发到平台上,如果有修改和补充也会在​​ohmyfish​​上进行。目标理解松耦合设计思......
  • 《C++ 并发编程实战 第二版》:条件变量唤醒丢失与虚假唤醒
    《C++并发编程实战第二版》:条件变量唤醒丢失与虚假唤醒本文主要是对《C++并发编程实战第二版》第4章中条件变量部分做进一步探究,主要内容为使用条件变量时可能会碰到......
  • C++ Primer 0x0D 练习题解
    ......
  • C++ Primer 0x09 学习笔记
    ......