工作需要,对gem5有点兴趣,准备自己研究一下,gem5新手刚开始入门学习,主要参考了网上其他前人的文章和官方说明。

目前网上的前人文章有部分有点太早了,稍显过时,我结合自己的经历来整理一下流程。

gem5 介绍我就不多说了,官方网站如下:

https://www.gem5.org/

我用的环境是深度的deepin,属于可以用apt命令来安装的那一类,比如乌班图。

一上来需要安装gem5需要的各种包和依赖。

sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python

上面这个命令是官网上的,里面有python pyhton-dev 这两个是python2的,但现在的gem5不支持python2了,必须要3。所以还需要安装python3。

sudo apt install  python3  python3-dev

尽量联网后用apt或者yum命令搞定上面这些东西,不然自己去找还是挺麻烦。我试了下deepin 都可以搞定,其他大概率会用ubuntu之类的更没问题,我开始用deepin还安不上,结果是没有更新库,先用sudo apt update,之后就可以了。

版本问题目前没有那么恼火了,我直接更新下来都可以用,不用特别在意某个软件的版本问题。

接下来就是下载gem5了,官方推荐用git来下,但国内应该不行,还是用这个地址下载吧:

https://github.com/gem5/gem5

点code 下面就有下载的按钮。

接下来就是把这个包解压,解压后进去,进去之后就可以编译了,可以来编一下X86。

sudo python3 `which scons` build/X86/gem5.opt -j8

自己的环境的话最好加个sudo,不然可能会有问题,后面的-j8是8个核跑的意思大概是吧我觉得。如果报错就不要这个参数也行,反正我看了下编的时候我的每个cpu都是100%,说明是都用上了的。

which scons其实就是scons命令,把它路径加上,build是编的结果放在build文件夹里面,我试了下其他的名字好像不行,不知为啥。gem5.opt就是结果,最后编成功的话会生成gem5.opt文件。我的电脑有点慢,编了快一个小时才搞定。

我看了下中间过程,有些warning,然后就开始来消除警告,一般来说只要成功了,警告可以不管,但我还是想把能去的去掉。

我这里出现了三个warning,一个是 valgrind啥之类的记不清了,二个是找不到png.h,三个是找不到hdf5 c++库。下面一个一个搞定,我花了很久时间去查这些东西,有时去下载了手动安装,有时可以直接apt,搞定之后又试了下尽量全部apt,这样简单点,结果如下:

valgrind这个好像是GDB里面的组件还是功能哦,直接安装GDB就可以搞定:

sudo apt install gdb

png.h这个我试了几次结果可用的apt如下:

sudo apt install libpng-dev

hdf5这个也是找了很久,还安了hdf5这个包都不行,结果是另一个相关的lib就行,现在一个命令搞定:

sudo apt install libhdf5-dev

这三个安好了之后再编就不会出现找不到库的警告,成功编译后就可以测试一个hello world的例子

sudo ./build/X86/gem5.opt ./configs/example/se.py -c  ./tests/test-progs/hello/bin/x86/linux/hello

运行后成功结果如下:

warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
warn: membus.master is deprecated. `master` is now called `mem_side_ports`
warn: membus.master is deprecated. `master` is now called `mem_side_ports`
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
Global frequency set at 1000000000000 ticks per second
warn: No dot file generated. Please install pydot to generate the dot file and pdf.
build/X86/mem/mem_interface.cc:793: 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 ****
build/X86/sim/simulate.cc:107: info: Entering event queue @ 0. Starting simulation...
Hello world!
Exiting @ tick 5985500 because exiting with last active thread context

成功输出hello world。到此基本环境测试跑通。

另外如编的过程中出错要重新编,可以把build这个文件夹删掉就行。

目前我搞到这一步,最后发一个官方的学习指导链接,可以看看,那里有些东西要细一点,可以结合着看。

https://www.gem5.org/documentation/learning_gem5/part1/building/

gem5使用记录,gem5入门学习和环境配置。的更多相关文章

  1. (转)深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

      深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 发表于2016年07月15号由52nlp 接上文<深度学习主机攒机小记>,这台GTX10 ...

  2. PHP入门及服务环境配置(Nginx+PHP)

    PHP入门及服务环境配置(Nginx+PHP) PHP入门 PHP维基百科: PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一 ...

  3. Libgdx游戏学习(1)——环境配置及demo运行

    原文: Libgdx游戏学习(1)--环境配置及demo运行 - Stars-One的杂货小窝 Libgdx游戏是基于Java的一款游戏引擎,可以发布Android,桌面端,Html,IOS等游戏,出 ...

  4. 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow

    深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直 ...

  5. 1 python学习——python环境配置

    1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...

  6. 深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow

    接上文<深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0>,我们继续来安装 TensorFlow,使其支持GeForce GTX 1080显卡 ...

  7. 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

    不多说,直接上干货! 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

  8. JMeter学习-002-JMeter环境配置

    本节主要介绍 JMeter 本地环境配置(JMeter 版本为 apache-jmeter-2.12),详细配置如下: 一.JDK配置 默认用户本地已经安装且配置好 JDK.若未配置,敬请参阅我的博客 ...

  9. RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 在项目启 ...

随机推荐

  1. 使用vue实现排序算法演示动画

    缘起 最近做的一个小需求涉及到排序,界面如下所示: 因为项目是使用vue的,所以实现方式很简单,视图部分不用管,本质上就是操作数组,代码如下: { // 上移 moveUp (i) { // 把位置i ...

  2. 常见的git命令和git->github错误

    相关命令 git remote git remote add origin xxx (xxx为仓库链接) 给这个链接取一个名字,为origin git pull git pull <远程主机名& ...

  3. 从 1.5 开始搭建一个微服务框架——日志追踪 traceId

    你好,我是悟空. 前言 最近在搭一个基础版的项目框架,基于 SpringCloud 微服务框架. 如果把 SpringCloud 这个框架当做 1,那么现在已经有的基础组件比如 swagger/log ...

  4. 利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率

    一.目的 (1)在固定节点个数的前提下,仿真求得使网络保持连通的最小通信半径(最低能级). (2)在上述节点个数和通信半径的前提下,计算随机布撒的节点的覆盖率. 二.方法描述 (1)首先假设通信半径都 ...

  5. Python图像处理丨图像腐蚀与图像膨胀

    摘要:本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法. 本文分享自华为云社区<[Python图像处理] 八.图像腐蚀与图像膨胀>,作者: eastmount . ...

  6. 4-3 Spring MVC框架-02

    Spring MVC框架-02 Ⅰ.RESTful基础 是一种设计风格和开发方式 1.get和post请求区别: get post 获取请求 上传请求 请求参数在地址栏URL 请求参数在请求体里面 U ...

  7. 或许是 WebGIS 下一代的数据规范 - OGC API 系列

    目录 1. 前言 1.1. 经典的 OGC 标准回顾 1.2. 共同特点与时代变化 1.3. 免责声明 2. 什么是 OGC API 2.1. OGC API 是一个开放.动态的规范族 2.2. OG ...

  8. 常用的函数式接口_Function接口练习_自定义函数模型拼接

    package com.yang.Test.FunctionStudy; import java.util.function.Function; /** * 练习:自定义函数模型拼接 * 题目: * ...

  9. websocket心跳实现

    简介 在实际项目中可能会使用到websocket,在使用过程中可能会存在一种问题就是,当网络异常断开时.或者websocket服务波动时,websocket会断开,导致异常,正常情况下,我们会采用心跳 ...

  10. 移动web开发01

    pc端的支持情况.IE9以下的版本就会全军覆没.移动端就不会出现版本支持问题. 因为第一个孩子是p,但是他又是在span里面选,所以根本选不出来,报错.改成第二个孩子才可以选出来. 这样就可以选出sp ...