编译一个非常大的.cpp文件

时间:2013-07-09 13:56:49

标签: c++ compilation compiler-optimization mingw-w64

类似的问题,没有适用于我的案例的真实答案:CLICK
我在问这里之前研究过的问题 - CLICK

我正在使用MinGW64尝试编译非常大的.cpp文件(>13k行),但我也可以访问Visual Studio 2010 - 如果有人使用了解决方案那个,随便告诉我。
我在装配阶段发现了一个错误 -

... too many sections (33396)
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Assembler messages:
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Fatal error: can't write 
CMakeFiles/source.dir/sourcecode.cpp.obj: File too big

我正在按照我的两位同事的建议运行-Os--param ggc-min-expand=0--param ggc-min-heapsize=4096的编译 - 编译现在正在运行5个多小时。

更新

正如一些人所建议的,我只是将文件拆分为2个源文件并为它们创建标题 - 谢谢。

第二次更新:

编译尚未完成(5天!!!),即使在创建标题并将文件拆分为4个较小的文件后也是如此。

最终

这个问题仍然没有得到解决 - 即使按照发布的每个人的建议,我仍然无法编译这个问题。

1 个答案:

答案 0 :(得分:1)

不确定GCC,但您是否在VisualStudio中尝试了该特定文件的/bigobj标志?
我对一个大文件有同样的问题,它实际上解决了这个问题。所以值得一试。

来自MSDN:

  

默认情况下,对象文件最多可容纳 65,536(2 ^ 16)个可寻址部分。无论指定哪个目标平台,都是这种情况。 / bigobj将容量增加到 4,294,967,296(2 ^ 32)

有关此here的更多信息。