我正试图使用基本的makefile将我的C++库移植到g++(它在Visual Studio中编译得很好)。我现在试图编译的部分大约有45000行代码。
库本身编译正常,但当我试图将其包含到控制台iterface应用程序中时,编译器崩溃,只显示以下消息:
cc1plus.exe: out of memory allocating 838860800 bytes
当我包含项目的主标题时就会发生这种情况(它是机器生成的,没有提交到repo,请在Gist上查看)。
我想这是因为标题太大了,但我注意到其他项目都有这样包罗万象的标题,不会遇到这些问题。我试图从标题中去掉所有非必要的部分(大约三分之一,其余部分是应用程序编译所必需的),但问题仍然存在。我还注意到错误消息中的数字根本没有改变,所以我相信是一些单一的问题导致了错误,而不是纯粹的代码量造成的。
除了通常的STL之外,很少使用模板,而且我正在编译的代码似乎在任何方面都不引人注目。
我使用的是g++4.8.1,在Windows8.1x64上的mingw32下有16GB的RAM。该代码正在使用-std=c++98
进行编译。
如何查找导致此问题的代码g++不会为我提供任何诊断信息来提示原因,即使使用了-v
开关(以下是它返回的内容)。
当您尝试使用gcc编译保存在Windows中的UTF-16编码文件时,就会发生这种情况。将源代码的编码更改为UTF-8。请参阅相关CPP文件。