繁体   English   中英

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

[英]Running 'gcc' on C++ source file on Linux gives “cc1plus: out of memory allocating …” error message

我在 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 位)。 我做错了什么?

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

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

我在用MAKEFILE编译C++程序时遇到了同样的问题。

我找到了一个简单的方法来摆脱这个问题,它是从以前的 compile 中删除现有的二进制文件

我无法确定问题的根源,但这对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM