现象描述:在树莓派上用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
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中恢复保存 的数据到内存中。