使用Gem5在aarch64架构下运行SPEC2006样例(二)——样例编译

在做课程设计的时候发现好多人不会,就整理一下先发这一部分的内容吧,其它的放假再补。


在Gem5的编译与测试完成后,需要编译能在Gem5环境下运行的SPEC2006样例。

如果有其它报错欢迎在评论区补充。

一、下载源码并导入

由于SPEC2006是收费软件,在CSDN上就不方便放分享源码。除非能通过其它途径联系到我。网络上有很多资源,但有一些源码是只有Windows的安装脚本而没有Linux的,还是要注意分辨。最好是能够下到iso镜像,或者由iso提取的压缩包也可以。

首先将源码拷贝到gem5目录下并解压

二、安装SPEC2006

通过以下语句执行安装:

sudo sh ./install.sh

中途提示判断地址是否正确,可选择yes/no来确认/更改安装的位置。

如果出现错误:

ERROR: Programs in *路径* cannot be executed. Is this volume mounted with the "noexec" flag? Tools installation will not be able to proceed until this is rectified.

说明权限不正确,需要会到上层目录赋予该路径管理员权限

chmod 777 -R Spec-cpu2006-1.2

如果出现类似于图片中的错误:

则需要去源码中找到对应的文件,把"_"改成"-"。或者先在Windows系统上将文件从镜像中提取出来,再复制到系统中。 

三、编译样例

1.安装aarch64交叉编译环境

在上篇文章中,已经安装了aarch64的gcc和g++交叉编译器,继续编译样例还需要安装aarch-gfortran编译器。通过:

sudo apt install gfortran-8-aarch64-linux-gnu

安装 gfortran-aarch64。

2.加载环境变量

只要需要用到SPEC2006的指令,都需要在打开终端时加入:

source ./shrc

来加载SPEC2006的环境变量。在之后不再赘述。

3.交叉编译配置

进入SPEC-cpu2006-1.2/config目录下,复制Example-linux64-amd64-gcc43+的配置文件(这个文件的选择根据Gem5中模拟的核模型来选择),将其重命名为aarch64.cfg(可以任意命名为其它名称)。

打开aarch64.cfg,找到下面两处代码,修改为图片中的形式。

在gem5中运行的样例需要静态编译,故加上-static标签

 由于本机指令集是x86,gem5核模型是arm,需要使用aarch交叉编译为arm架构的可执行文件。

保存并退出。 

4.编译样例

(1)编译样例

回到SPEC-cpu2006-1.2目录下,在命令行中执行:

runspec --config=<你的配置文件名> --action=build --tune=base <编译的样例名>

配置的文件名为上一步设定的。

编译的样例名可以为某个具体的样例名,也可以是all(全部样例),int(全部整型样例),fp(全部浮点型样例)。由于任务要求是测试三个样例,所以可以仅编译某三个样例。

 Build完成后会提示哪些样例成功了哪些失败。之后选择成功的样例执行即可。

(2)生成可执行文件

执行

runspec --config=<你的配置文件名> --size=ref --noreportable --tune=base --iterations=1 <样例名称>

执行后会出现run文件夹,内含可生成能够在gem5中运行的可执行文件和输入数据。

此处报错无需在意,因为是交叉编译,在x86的电脑上是执行不了arm架构的程序的。只要文件夹生成即达到目的。

 


版权声明:本文为Orion_Zyx原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。