1.配置环境:
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python
2.下载源代码:
git clone https://gem5.googlesource.com/public/gem5
这一步不能连接外网的话就直接下载压缩包:
链接:https://pan.baidu.com/s/1cnFdbuaBxg58ELzKiUZqPw
提取码:cbwc
3.使用命令cd gem5/进入
4.编译:(如果物理内存小于16G,建议执行此步骤之间查看swap大小,使用命令free -m)
scons build/ARM/gem5.opt -j8
5.测试:
./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello
输出Hello world!表示运行成功
编译过程可能出现的错误:
fatal error:Killed signal terminated program cc1plus
原因:内存不足,编译中止
解决办法:增加交换分区
Linux 交换区——SWAP
当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,供当前运行的程序使用。被释放的空间可能来自一些长时间没有操作的程序,被释放的空间被临时保存在swap空间中,等到这些程序需要运行时,再从swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不足时,才进行swap交换。
增加swap交换分区
查看交换分区大小:
free -m
进入root用户:
#sudo -i sudo -s
创建一个目录:
mkdir /swap
进入目录:
cd /swap
输入以下命令来增加swap空间:
dd if=/dev/zero of=swapfile bs=1024 count=10290000
执行成功后看见到如下内容:
记录了10290000+0 的读入
记录了10290000+0 的写出
10536960000字节(11 GB,9.8 GiB)已复制,181.055 s,58.2 MB/s
配置:
mkswap swapfile
可能会出现如下提示:
mkswap: swapfile:不安全的权限 0644,建议使用 0600。
正在设置交换空间版本 1,大小 = 9.8 GiB (10536955904 个字节)
无标签, UUID=f509e38b-9ba3-4652-82d3-a400892076a5
解决办法:
sudo chmod 600 swapfile
挂载交换区:
swapon swapfile
再次查看交换分区大小:
free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 7870 1877 142 400 5851 5296
交换: 12096 1 12095
如提示:swapon失败:设备或资源忙
采用如下步骤:
关闭swap交换区:
swapoff swapfile
重新挂载交换区:
swapon swapfile
如上,交换分区增加完成
参考:
1.Ubuntu安装gem5_xiao_huocai的博客-CSDN博客
2.【Linux】Ubuntu增加Swap交换区大小_m0_46537958的博客-CSDN博客
3.gem5: Building gem5



