一尘不染

在Linux上的C ++源文件上运行'gcc'会给出“ cc1plus:内存不足分配…”错误消息

linux

在Ubuntu上使用’gcc’编译C ++源文件时遇到一个令人费解的问题。解决了这个问题后,我想在这里发布它,以免其他人难以解决。

为了这份报告,我们将最简单的C ++“ Hello,World”程序存储在main.cpp中:

#include <stdio.h>

int main (int argc, char *argv[])
{
    return 0;
}

当我运行命令时:

gcc main.cpp

我收到错误消息:

cc1plus: out of memory allocating 1677721600 bytes after a total of 475136 bytes

我确认我正在编译正确的位(即32位)。我做错了什么?


阅读 871

收藏
2020-06-02

共1个答案

一尘不染

事实证明,我已将C ++源文件另存为UTF-16
Unicode编码的文件,并在文件的开头加上了领先的Unicode字节顺序标记(BOM)字节。该文件在Windows系统上保存为UTF-16,提交到版本控制系统,然后签出到Linux。gcc确实支持Unicode编码为UTF-8,但不支持Unicode编码为UTF-16。

解决方案是将源文件转换回标准的非Unicode编码。

2020-06-02