gem5学习(9):构建gem5——Building gem5

news2024/9/21 20:35:01

目录

一、Requirements for gem5

二、Getting the code

三、Your first gem5 build

1、gem5 binary types

四、Common errors

1、gcc版本过低

2、使用非默认版本的python

3、未安装M4宏处理器

4、Protobuf版本过低


前面的gem5学习(3)—(8)是gem5官网的learning_gem5中的Modifying/Extending章节的,但是后续对源码进行更改的时候发现有些基础教程由于看的时间太久已经忘了,英文阅读又太麻烦,不如重新整理成中文版学习笔记,供后续学习。

官方教程:gem5: Building gem5

这个j教程是最基础的设置gem5开发环境并构建gem5。

一、Requirements for gem5

在Ubuntu上,使用以下命令安装所有必需的依赖项。

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

下面这部分就是对相关依赖版本的要求。

  • gcc 7+(GCC Versions >=7, up to GCC 11
  • SCons 3.0+
  • Python 3.6+
  • prptobuf 2.1+ (Optional)【使用protobuf进行跟踪生成和回放时,需要安装该依赖项】
  • Boost (Optional)

二、Getting the code

下载gem5仓库。

git clone https://github.com/gem5/gem5

三、Your first gem5 build

从构建一个基本的x86系统开始。

必须为每个想模拟的ISA单独编译gem5。

注意:如果使用了ruby-intro-chapter,还必须为每个缓存一致性协议分别进行编译。

模拟器使用SCons来构建gem5。SCons使用SConstruct文件(gem5/SConstruct)设置了一些变量,然后使用每个子目录中的SConscript文件来查找和编译所有的gem5源代码。

当首次执行时,SCons会自动创建一个gem5/build目录。在这个目录中,可以找到SCons生成的文件、编译器等。每个用于编译gem5的选项集(ISA和缓存一致性协议),都有一个单独的目录。

build_opts目录中有一些默认的编译选项。这些文件指定了在初始构建gem5时传递给SCons的参数。示例中使用X86的默认值,并指定要编译所有的CPU模型。

可以通过查看build_opts/X86文件,了解SCons选项的默认值。也可以在命令行上指定这些选项,用来覆盖任何默认值。

python3 `which scons` build/X86/gem5.opt -j9
  • python3是指使用Python 3解释器来运行后续的命令。
  • which scons用于查找系统中安装的SCons构建工具的路径。这个命令返回SCons可执行文件的完整路径。
  • build/X86/gem5.opt指定了gem5的构建目标。在这种情况下,它表示要构建gem5的优化版本(gem5.opt)。构建目标的路径相对于gem5源代码根目录。
  • -j9选项表示要使用9个并行作业来加速构建过程。这允许同时运行多个编译任务,加快构建速度。具体可以根据系统配置和可用的处理器核心数量来调整并行作业的数量。

因此,命令的意思是使用Python 3解释器运行SCons构建工具,并使用9个并行作业来构建gem5的优化版本。

1、gem5 binary types

在gem5中,SCons脚本目前支持构建5个不同的gem5二进制文件,分别是debug、opt和fast。

  • debug(调试):Debug版本是为了方便调试和排除错误而构建的。它包含了用于调试目的的符号表和调试信息,可以在调试器中进行逐步调试,并提供更详细的日志和错误报告。但是,由于包含了额外的调试信息,Debug版本的gem5可能会比其他版本稍微慢一些。

  • opt(优化):Opt版本是经过优化的版本,旨在提供更高的性能和执行速度。它在编译过程中进行了各种优化,例如代码优化和编译器优化,以提高gem5的运行效率。Opt版本通常用于正式的性能评估和实际使用场景。

  • fast(快速):Fast版本是为了快速原型设计和快速验证而构建的。它在编译过程中进行了更多的优化,以追求更快的构建速度,而不是运行时的最佳性能。Fast版本可能会牺牲一些性能,但可以更快地进行实验和快速迭代。

传递给SCons的主要参数是我们上述命令行要构建的目标,即build/X86/gem5.opt。在本例中,我们正在构建gem5.opt(带有调试符号的优化二进制文件,如果不需要优化的话可以直接构建gem5.debug版本)。

命令行希望将gem5构建在build/X86目录中。由于该目录当前不存在,SCons将在build_opts中查找X86的默认参数(注意:在这里使用了-j9,通常是核心数加1)。

最后没有报错,同时出现:scons: done building targets.表示构建成功。

四、Common errors

问题都比较简单,只列不改,教程中有详细的解决办法。

1、gcc版本过低

2、使用非默认版本的python

3、未安装M4宏处理器

M4是一个宏处理器,通常用于生成复杂的代码或配置文件。

4、Protobuf版本过低

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1367188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试高招:程序员如何在面试中脱颖而出

Java面试高招:程序员如何在面试中脱颖而出 《Java面试高招:程序员如何在面试中脱颖而出》摘要引言面试经历面试失败的反思 面试技巧侦探式的问题解决无敌铁金刚的坚定决心 参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1…

安全典型配置(六)配置IPSG限制非法主机访问内网案例(静态绑定)

相关文章学习: 安全典型配置(一)使用ACL限制FTP访问权限案例 安全典型配置(二)使用ACL限制用户在特定时间访问特定服务器的权限案例 安全典型配置(三)使用ACL禁止特定用户上网案例安全典型配置…

产品经理如何做好需求评审?掌握五大关键要素

随着产品经理职位的日益重要,对产品需求的评审也越来越重要。一个成功的产品经理需要不仅仅是拥有好的产品理念和市场分析能力,更需要拥有好的需求评审能力,这样才能够确保产品能够顺利开发,最终成功上市。那么,产品经…

【系统高级-环境变量】path配置一整行,而不是列表

这是列表编辑方便。但是不知道为什么变成一行,非常的令人抓狂,经过研究发现,第一个环境变量必须为C:\Windows\system32 开头才可以 文章如下 修改环境变量中的一行变成列表形式_环境变量编辑不是列表-CSDN博客

WiFi6工业网关能为工业物联网带来哪些改进?

WiFi 6( 802.11ax)比其前身WiFi 5(802.11ac)带来了多项改进,例如更快的通信速率、更大的带宽容量、在多设备连入时更稳定的性能、更大的链接范围、增强的安全性以及更好地支持物联网工作负载等,本篇就为大家…

实战:使用docker容器化服务与文件挂载-2

接着上文,演示Elasticsearch 和 Kibana 的安装,并讲解文件挂载 Elasticsearch of Docker (Kibana) 1、Elasticsearch 安装 ElasticSearch 使用 Docker 安装:https://www.yuque.com/zhangshuaiyin/guli-mall/dwrp5b 1.…

Linux第20步_在虚拟机上安装“Visual Studio Code”

1、双击windows系统桌面上的“FileZilla Client.exe”,打开FTP客户端,点击03软件下的Visual Studio Code,发现code_1.50.1-1602600906_amd64。 2、点击“文件”,然后点击“站点管理器”,见下图操作: 3、点…

猫头虎分享已解决Bug || Go Error: cannot use str (type string) as type int in assignment

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

Python将Labelme文件的真实框和预测框绘制到图片上

Python将Labelme文件的真实框和预测框绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专…

这些专利知识你知道吗?

专利作为一种重要的知识产权保护形式。专利不仅成为了企业核心竞争力的重要组成部分,也成为了国家创新发展的重要支撑。 专利是指国家专利主管机关授予发明创造申请人的一种专有权,这种专有权具有独占性、排他性和法律强制性,能够为持有者带来…

通过盲对抗性扰动实时击败基于DNN的流量分析系统

文章信息 论文题目:Defeating DNN-Based Traffic Analysis Systems in Real-Time With Blind Adversarial Perturbations 期刊(会议):30th USENIX Security Symposium 时间:2021 级别:CCF A 文章链接&…

基于sigma-delta和MASHIII调制器的频率合成器simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Sigma-Delta调制器原理 4.2 数学模型 4.3 噪声整形 4.4 MASH III调制器原理 4.5 基于Sigma-Delta和MASH III的频率合成器 5.算法完整程序工程 1.算法运行效果图预览 其误差当系统进…

已解决 Java Error: java.lang.UnsupportedOperationException 问题

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

Linux学习记录——삽심칠 传输层TCP协议(2)

文章目录 1、滑动窗口2、拥塞控制3、延迟应答4、捎带应答5、总结TCP可靠性和性能提高6、面向字节流7、粘包问题8、异常情况9、全连接、半连接 上一篇是传输层TCP协议(1)。本篇默认读者已经清楚TCP报头各个部分、可靠性和握手挥手的含义。 有时候会把客户…

《中学物理奇妙日志——30天物理学探索之旅》提纲

《中学物理奇妙日志——30天物理学探索之旅》提纲 第一部分:物理学基础(第1-5天) 第一天:引言 - 从生活中的物理现象出发,阐述物理学的定义与重要性 子主题:物理学的历史、发展及在现代生活中的广泛应用 …

Postman Newman 教程:轻松管理 API 自动化测试步骤

Postman 中的 Newman 是什么? Newman 是一个 CLI(命令行界面)工具,用于运行 Postman 中的集合(Collection)和环境(Environment)来进行自动化测试。它允许直接从命令行运行 Postman …

不求人,自己找到全网最火的编程项目。

文章目录 一. 到哪儿去找项目?二. 什么是最好的项目?三. 怎么高效找项目?四. 怎么高速下载项目? 一. 到哪儿去找项目? 书上习题网络课程线下培训Github、Gitee、开源中国 最好的找项目的地方是github。 二. 什么是最…

【读书笔记】网空态势感知理论与模型(七)

通过网络级对象依赖关系揭示0Day攻击路径 1. 研究动机 0Day攻击是攻击者和防御者之间信息不对称的结果。赛门铁克研究人员认为,典型的0Day攻击平均隐藏312天才会被觉察。 受到SKRM模型启发,Patrol系统以全局视野来调查在某一个路径上的0Day攻击行为。从…

Redis中字符串表示是如何设计与实现的?

文章目录 Redis中字符串表示是如何设计与实现的(SDS)?引言简单动态字符串底层数据结构为什么不用char *举个🌰如何优化append操作?总结 Redis中字符串表示是如何设计与实现的(SDS)? …

Tomcat 的 work 目录缓存导致的JSP页面图片更新问题

一、问题分析 1. 修改后重新部署没有变化 笔者之前部署了一个后台管理项目,通过它来发布课程内容,其中有一个 JSP 课程页面,在该 JSP 页面里也引用了类文件 Constant.java 里的一个变量(ALIYUN_OSS_PATH),…