我在编译PCL库的过程中,总因为内存不足的问题出现C++: fatal error: Killed signal terminated program cc1plus导致编译中断,如下图所示
在这里插入图片描述

在此提供几种解决方式:

①增加内存
因为我的ubuntu系统是安装在VMware虚拟机当中的,可以从虚拟机中设置增大内存。
在这里插入图片描述
但是我的总物理内存是8G,设置的内存已经有7G了,依然解决不了问题。

②增加SWAP交换空间
可以在终端中输入 free -m 查看一下SWAP交换空间的大小(这里也可以看内存的使用情况),我这里只有约2G。
在这里插入图片描述
这里网上写的方式有很多,我参考了此篇博文这里,和博文里有一点不同,我输入了语句su,增加权限。先创建临时分区:

sudo dd if=/dev/zero of=/swapfile bs=1G count=6
#count的大小就是增加的swap空间的大小,1G是块大小为1G,所以空间大小是bs*count=6G
sudo mkswap /swapfile
#把刚才空间格式化成swap格式
su
chmod 0600 /swapfile  
sudo swapon /swapfile
#使用刚才创建的swap空间

自己的程序编译完成后,可以什么也不用做保留当前大小的交换空间,也可以在终端输入 swapoff -a 释放临时增加的交换空间。

③减少进程数量
还有一种方式就是减少cmake编译时的进程数量,在此处我的设定是:

make -j4 //选择4个进程同时处理

可以再减少一些同时处理的进程,但是对于有些编译程序,时间会特别长(就比如编译PCL)。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐