本文章主要关于我在安装gem5时遇到的一些问题和解决方案。其中有些问题我也没有找到具体的解答,希望有人可以给出确切的答案,相互学习。
我是根据http://www.gem5.org/documentation/general_docs/building的介绍进行安装的。
使用的是ubuntu20.04系统。
先安装Dependencies。
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev python3-six python-is-python3 libboost-all-dev pkg-config
现在下载gem5.这里我是在gitee上下载的,
git clone https://gitee.com/mirrors/gem5.git
在/gem目录中运行scons。
Scons build/X86/gem.opt
最终输出为:
[ RANLIB] -> iostream3/libiostream3.a
[ LINK] -> X86/gem5.opt
scons: done building targets.
测试:
build/X86/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/X86/linux/hello
输出为:
**** REAL SIMULATION ****
info: Entering event queue @ 0. Starting simulation...
Hello world!
Exiting @ tick 5943000 because exiting with last active thread context
我在安装时出现过很多问题。原本我是在ubuntu18上运行的,后来对ubuntu进行在线升级为ubuntu20,还是出现了几个错误:
问题1、
fatal error:Killed signal terminated program cc1plus
答:给虚拟机分配的内存小了,之前分配的是3G,我将虚拟机的内存设置为6G可以了。
问题2、
scons: Reading SConscript files ...
TypeError: argument should be integer or bytes-like object, not 'str':
File "/home/lu/Desktop/11/gem5/SConstruct", line 355:
main['GCC'] = CXX_version and CXX_version.find('g++') >= 0
sudo apt-get install virtualenv
# create a virtualenv which uses python 2.7
virtualenv -p python2.7 venv27
# activate the virtualenv
. venv27/bin/activate
# Install SCons in the python 2.7 virtualenv
pip install scons
# This will now use the scons installed in a python 2.7 virtualenv.
scons build/X86/gem5.opt -j8
This worked for me on an Ubuntu 20.04 system.
虽然scinsch成功,出现了:
scons: done building targets.
但是后续出现了下一个问题3:
问题3、
ImportError: No module named six
我在安装six后:
pip install six
运行依旧显示该问题。
自我感觉是因为前面使用的 virtualenv的问题。并且我最终没有找到解决方案。
最终方案:
最终我直接在虚拟机上安装ubuntu20,再次尝试运行后发现gem5可以运行。
我怀疑是ubuntu18升级ubuntu20时,系统的某些程序发生了变化,造成了python3和Python2的混乱,导致运行scons时发生错误。