WSL Ubuntu 18.04 编译安装GEM5模拟器

写在前面

GEM5是一款十分强大的模拟器,支持主流的X86、MIPS、ARM、RISC-V等多种架构的行为仿真模拟。

GEM5是M5和GEMS的结合,使用Python和C++编写(其中C++占越85%),提供大量标准化接口的同时保留了较好的灵活性。

因为研究需要,需要在Linux平台上使用GEM5模拟器,但我又无法忍受双系统切换的麻烦以及虚拟器无比卡慢的运行环境,选择尝试在Windows推出的WSL(Windows Support Linux) 平台上安装GEM5。GEM5可是个不折不扣的吃性能大户,WSL是为数不多不会带来计算性能损失的“双系统”运行环境,所以我选择WSL。

本文介绍GEM5在WSL Ubuntu18.04下的编译安装过程。

1. 安装编译所需支持包

  1. 安装g++以及扩展库
    一般Linux系统会预装g++,如果没装,可通过以下命令安装:
    sudo apt-get install g++
    扩展库通过以下命令安装:
    sudo apt-get install build-essential
  2. 安装python
    和g++一样,一般Linux系统预装python2.7,但还需要再安装一个python的开发库。
    sudo apt-get install python python-dev
  3. 安装Scons:
    sudo apt-get install scons
  4. 安装SWIG:
    sudo apt-get install swig
  5. 安装zlib:
    sudo apt-get install zlib1g zlib1g-dev
  6. 安装m4:
    sudo apt-get install m4
  7. 安装protobuf:
    这里需要注意,部分文章有推荐编译安装protobuf,但编译安装耗时较长,而且安装后,可能会出现版本不匹配的错误,幸好Ubuntu是支持快速安装的,于是索性就直接使用apt-get快速安装。
    sudo apt-get install libprotobuf-dev python-protobuf protobuf-compiler libgoogle-perftools-dev
  8. 安装boost库:
    sudo apt-get install libboost-all-dev

至此,编译GEM5需要的所有支持库已安装完毕,下面就可以开始编译GEM5了!

2. 下载GEM5

GEM5官方提供Google Cloud代码托管下载链接:

git clone https://gem5.googlesource.com/public/gem5

但众所周知,这在国内是无法通过正常方式访问的。官方还提供另一下载方式:

wget http://repo.gem5.org/gem5/archive/tip.tar.bz2

文件大约有37MB,外网访问速度较慢,请耐心等待。同时我也将文件上传到百度云盘,提取码:6ras
下载完成后,使用命令:

tar -xjf tip.tar.bz2

解压压缩包,解压后cd到文件夹内。

接下来就可以开始安装了!

3. 编译安装GEM5

GEM5支持包括X86、ARM、Power在内的多种商用架构,这里以ARM为例,开始我们的GEM5之旅。

进入到文件夹后,输入命令:

scons build/ARM/gem5.opt -j4

开始安装,需要注意,这里 “-j4”是指线程数,建议设置为与当前平台的CPU物理核心数相同。如,我的电脑是四核i7 6700,使用四线程并行加快编译速度。由于每个线程基本上都能够把一颗CPU核心吃满,所以超线程技术多出来的那一倍逻辑核心基本可以不用考虑进去了,以免遇到奇怪的错误。

编译耗时较长,会占用较大内存,内存4G以下机器可能会占用到虚拟内存空间,拖慢进度。编译基本上一个午觉的时间,当控制台上出现以下内容:

  ......
 [     CXX] ARM/mem/ruby/structures/Prefetcher.cc -> .o
 [     CXX] ARM/mem/ruby/structures/TimerTable.cc -> .o
 [     CXX] ARM/mem/ruby/structures/BankedArray.cc -> .o
 [    LINK]  -> ARM/mem/ruby/structures/lib.o.partial
 [     CXX] ARM/base/date.cc -> .o
 [    LINK]  -> ARM/gem5.opt
build/ARM/arch/arm/lib.o.partial: In function `ArmSemihosting::callTmpNam(ThreadContext*, bool, std::vector<unsigned long, std::allocator<unsigned long> >&)':
/home/zwmdr/gem5-22183ae13998/build/ARM/arch/arm/semihosting.cc:474: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
scons: done building targe

即表示安装完成了!

4. 简单测试

安装完成之后,我们运行GEM5自带的测试程序,非常经典的Hello World!在控制台键入:

./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello

如果你能看到如下信息:

hello
gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Nov  1 2019 14:26:00
gem5 started Nov  1 2019 15:37:59
gem5 executing on ZWMDR, pid 8516
command line: ./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello

Global frequency set at 1000000000000 ticks per second
warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes)
0: system.remote_gdb: listening for remote gdb on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0.  Starting simulation...
Hello world!
Exiting @ tick 2924500 because exiting with last active thread context
Simulated exit code not 0! Exit code is 13

就说明安装成功啦!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值