1、错误描述
在对ORB SLAM3进行编译时,多次出现一个现象,提示:c++: internal compiler error: 已杀死 (program cc1plus)。
报错情况:
这是由于自己的虚拟机交换空间不足导致的。
2、查看当前内存和交换空间情况
free -m
这是已修改过的
3、增大交换空间
Swap大小设置的原则:Swap大小的设置应该与系统内存大小成比例。通常情况下,Swap大小应该是内存大小的 2 倍。例如,如果系统内存为 4GB,则Swap大小应该设置为8GB,这样可以确保系统在内存不足时能够正常运行。
方法一、修改swappiness 参数
在 Ubuntu 系统中,swappiness 是一个与交换空间相关的参数。它的取值范围是 0 到 100。swappiness 参数控制着系统在内存使用紧张时候使用交换空间的程度。默认情况下,Ubuntu 的 swappiness 值设置为 60。这意味着当系统内存使用达到约 40% 时,就开始使用交换空间。将swappiness 值修改为20,不仅可以减小交换空间内存的使用,还可以提高ubuntu运行的速度(较低的 swappiness 值减少了系统将内存页面移到交换空间的频率)。
参考链接:https://blog.csdn.net/weixin_45839124/article/details/106899186
如果这个方法不能解决,就用方法二
方法二、永久增加Swap交换空间大小(推荐)
增加2G大小的交换分区
sudo swapoff -a # 关闭所有正在使用的swap分区
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# 创建一个名为swapfile的交换文件。bs:是块大小,count:被复制的块数。所以空间大小是bs*count=2048MB
sudo mkswap /swapfile # 将swapfile转换为swap格式。这要求文件的权限已设置为只有 root 用户可读写
sudo swapon /swapfile # 启用刚才创建的swap空间
sudo swapoff /swapfile # 关闭名为swapfile的交换空间 (编译后,按需要关闭)
sudo rm /swapfile # 若有需要,也可以删掉交换空间
块大小可以使用的计量单位表
参考链接:https://blog.csdn.net/HongkeShuai/article/details/130505353(推荐)
**如果还是报错就将编译命令 make -j4 改成 make **
错误解决