您的位置:首页 > 其它

g++遇害,谁是凶手?

2013-11-15 22:04 316 查看
摘要: g++: internal error terminated (program cc1plus)错误原因

#g++遇害,谁是凶手?
##案发现场
使用Qt Creator编译某个程序,突然爆出错误,g++不幸遇难:



##分析
由于使用的Qt版本比较低,心里一直想着哪天升下级,一出这个问题,第一个念头,版本太低的Qt做的祸。于是,下载Qt的源码包,编译,好长时间之后,重新编译程序,还是这个错误。功夫白费了!

面壁了一会,决定还是仔细看错误描述,g++: internal error terminated (program cc1plus),搜索一下,发现作为g++的bug报告过,但提交人后续没有提交详细的报告,超过三个月,被关掉了。
继续查,眼前一亮,很多案例都指向oom killer。仔细看了一些案例,嗯,不错就是它了。
##解决
既然是oom killer,那肯定是内存不足了。由于是虚拟机运行,所以条件有限,想办法把能禁掉的程序都关了,结果还是那样。看来内存总量不行啊,于是想到swap分区,free查看了一下,没有swap分区啊。当时为了方便省事,现在要偿还了。

于是,手动添加了swap分区,划了256M。方法如下。
划分swap分区:

dd if=/dev/zero of=/var/swap bs=1024 count=262144
mkswap /var/swap

设置成系统启动挂载:
在/etc/fstab中加上:/var/swap swap swap defaults 0 0
重启,重新编译OK。
##参考

g++ Bug32728

编译Android的错误

Debian6.0.5的类似错误

oom-killer 的发现 与 swap分区搭建
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息