解决: g++: internal compiler error: Killed (program cc1plus)

 

现象描述:在树莓派上用qt编译二维码显示相关的UI程序时,经常报以上错误,有时候断电重启首次编译不会报错(估计是刚上电系统占用的内存比较少)

 

g++: internal compiler error: Killed (program cc1plus)

原因是系统内存不足,没有交换分区, 编译过程中内存耗尽, 导致了编译中断 …
解决方式也很简单, 就是(临时)增加一个交换分区:

 

sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile

 

After compiling, you may wish to


Code:

sudo swapoff /swapfile
sudo rm /swapfile
 

1. 创建分区文件, 大小 2G

dd if=/dev/zero of=/swapfile bs=1k count=2048000

2. 生成 swap 文件系统

mkswap /swapfile

3. 激活 swap 文件

swapon /swapfile

这样就木有问题了, 但是这样并不能在系统重启的时候自动挂载交换分区, 这样我们就需要修改 fstab.
修改 /etc/fstab 文件, 新增如下内容:

/swapfile  swap  swap    defaults 0 0

这样每次重启系统的时候就会自动加载 swap 文件了.

备注:1. 创建的交换分区大小为: bs x count。

            2. Swap 空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一 些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间(磁盘空间虚拟成内存使用)中,等到那些程序要运行时,再从Swap中恢复保存 的数据到内存中。

原文地址:https://www.cnblogs.com/cj2014/p/6865863.html