Gem5模拟器编译报错:ld被信号9终止,求解决方法
Gem5编译时
ld terminated with signal 9 [Killed]错误的原因及解决方法 错误原因
- 虚拟机内存不足:VirtualBox给Ubuntu分配的物理内存过少,Gem5链接阶段需要大量内存,加上
-j4开启4个并发编译线程,内存占用超出系统承载,触发OOM Killer(内存不足杀手)杀死ld链接进程。 - 交换空间不足:虚拟机未配置足够的swap分区/文件,物理内存耗尽后无法通过虚拟内存缓解,导致进程被强制终止。
解决方法
- 降低编译并发数:减少
-j后面的数字,降低内存占用。比如执行:
若仍报错,可尝试scons build/X86/gem5.opt -j 2-j 1单线程编译。 - 增加虚拟机物理内存:打开VirtualBox的虚拟机设置,给Ubuntu分配至少4GB内存(推荐8GB及以上),重启虚拟机后重新编译。
- 扩展交换空间:
- 查看当前swap状态:
swapon --show - 创建4GB的swap文件(可按需调整大小):
sudo fallocate -l 4G /swapfile - 设置文件权限:
sudo chmod 600 /swapfile - 格式化swap文件:
sudo mkswap /swapfile - 启用swap:
sudo swapon /swapfile - (可选)设置开机自动挂载:编辑
/etc/fstab文件,添加一行:/swapfile none swap sw 0 0
- 查看当前swap状态:
- 关闭冗余进程:编译前关闭虚拟机内的浏览器、IDE、后台服务等非必要程序,释放内存资源。
内容的提问来源于stack exchange,提问作者CSE_5105_yuvraj sahu
相关产品推荐
相关产品推荐

