SimpleScalar的安装与配置
来源:互联网 发布:北京seo排名 编辑:程序博客网 时间:2024/05/17 06:01
1. SimpleScalar的安装
以Ubuntu 9.04系统下为例:
(1)首先准备需要的安装文件,如果没有可到以下地址下载:
simpletools-2v0.tgz:http://www.simplescalar.com/tools.htmlsimplesim-3v0d-with-cheetah.tar.gz:http://www.ict.kth.se/courses/IS2202/softwaresimpleutils-990811.tar.gz:http://www.eecs.umich.edu/mirv/softwaregcc-2.7.2.3.ss.tar.gz:http://american.cs.ucdavis.edu/RAD/gcc-2.7.2.3.ss.tar.gz
(2)打开终端,设置环境变量为:
(安装目录)$ export IDIR=/home/student/simplescalar(主机)$ export HOST=i686-pc-linux(目标机)$ export TARGET=sslittle-na-sstrix
(3)在student主目录下创建目录simplescalar,并将4个安装包移动至该目录:
$ mkdir $IDIR$ mv simplesim-3v0d-with-cheetah.tar.gz $IDIR$ mv simpletools-2v0.tgz $IDIR$ mv simpleutils-990811.tar.gz $IDIR$ mv gcc-2.7.2.3.ss.tar.gz $IDIR
(4)使用命令更新Ubuntu下的软件包build-essential,flex,bison:
$ sudo apt-get install build-essential flex bison
(5)安装SimpleTools:
解压包文件,并移除旧的gcc文件夹:
$ cd $IDIR$ tar xvfz simpletools-2v0.tgz$ rm -rf gcc-2.6.3
(6)安装SimpleUtils:
首先解压包文件。
$ cd $IDIR$ tar xvfz simpleutils-990811.tar.gz$ cd simpleutils-990811
编译前需要修改一处代码错误:在目录simpleutils-990811/ld下找到文件ldlex.l并将所有的yy_current_buffer替换为YY_CURRENT_BUFFER.
接下来开始配置,编译:
$ ./configure --host=$HOST --target=$TARGET --with-gnu-as --with-gnu-ld --prefix=$IDIR$ make CFLAGS=-O$ make install
(7)安装模拟器:
$ cd $IDIR$ tar xvfz simplesim-3v0d-with-cheetah.tar.gz$ cd simplesim-3.0$ make config-pisa$ make
测试:
$ ./sim-safe tests/bin.little/test-math
(8)安装gcc交叉编译器:
解压源代码,并配置安装,修改代码文件读写权限:
$ cd $IDIR$ tar xvfz gcc-2.7.2.3.ss.tar.gz$ cd gcc-2.7.2.3$ ./configure --host=$HOST --target=$TARGET --with-gnu-as --with-gnu-ld --prefix=$IDIR$ chmod -R +w .
接下来,为使编译顺利进行,需要做以下修改:
修改Makefile的第130行, 行末添加-I/usr/include;
修改protoize.c的第60行,
将“#include <varargs.h>”替换为“#include <stdarg.h>”;
3.为了解决decl.c的一处错误信息, 名为“invalid lvalue in increment”, 做以下修改:
编辑obstack.h的第341行并将:
*((void **)__o->next_free)++=((void *)datum);\
替换为:
*((void **)__o->next_free++)=((void *)datum);\
并运行以下命令:
$ cp ./patched/sys/cdefs.h ../sslittle-na-sstrix/include/sys/cdefs.h$ cp ../sslittle-na-sstrix/lib/libc.a ../lib/$ cp ../sslittle-na-sstrix/lib/crt0.o ../lib/
接下来构建(build)编译器:
$ make LANGUAGES=c CFLAGS=-O CC="gcc -m32"
这个命令执行后会产生错误信息,可能还需要作如下修改:
追加 ‘\’到insn-output.c的675, 750和823行末尾;
2.再次执行“make LANGUAGES…”后,碰到错误”buffer overflow”,这是由于Ubuntu版本较新造成的。
下载以下文件,放在$IDIR/sslittle-na-sstrix/bin下:
- http://www.ict.kth.se/courses/IS2202/ar
- http://www.ict.kth.se/courses/IS2202/ranlib
然后,请修改ar及ranlib的权限为可执行,不然会提示“Permission denied”!
使用命令:
$ chmod +x ar ranlib
或在ar及ranlib的属性中修改。
3.再次执行“make LANGUAGES…”后,如果需要则删除cxxmain.c的2978-2979行。
现在,运行:
$ make LANGUAGES=c CFLAGS=-O CC="gcc -m32" $ make enquire $ ../simplesim-3.0/sim-safe ./enquire -f > float.h-cross $ make LANGUAGES=c CFLAGS=-O CC="gcc -m32" install
这样应该不会产生新的错误了。
在一独立的文件夹下,新建hello.c,内容为:
#include<stdio.h>main(){ printf("Hello World!\n");}
然后用如下命令编译:
$ $IDIR/bin/sslittle-na-sstrix-gcc -o hello hello.c
生成文件hello,可用如下方式运行:
$ $IDIR/simplesim-3.0/sim-safe hello
如果输出”Hello World!”,说明安装成功!
2.mp_simplesim的安装
(1) 移动到SimpleScalar安装目录:
$ cd simplescalar
(2) 将mp_simplesim.tar.gz解压至该目录:
$ tar xvzf mp_simplesim.tar.gz
(3) 进入mp_simplesim目录:
$ cd mp_simplesim
(4) 打开Makefile文件,将SS_BIN_PATH设置为交叉编译器的路径:
SS_BIN_PATH = /home/student/simplescalar/sslittle-na-sstrix/bin
(5) 编译:
$ make
遇到错误提示:
syscall.c:102:23: 错误: bsd/sgtty.h:没有该文件或目录
将syscall.c第102行中替换为:
#include <sgtty.h>
并保存。
(6) 继续运行make,出现新的错误:
syscall.c:823: 错误: ‘TIOCGETP’未声明(在此函数内第一次使用)
syscall.c:823: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
syscall.c:823: 错误: 所在的函数内也只报告一次。)
syscall.c:826: 错误: ‘TIOCSETP’未声明(在此函数内第一次使用)
将syscall.c的823-831行由:
/* #if !defined(__CYGWIN32__) */ case SS_IOCTL_TIOCGETP: local_req = TIOCGETP; break; case SS_IOCTL_TIOCSETP: local_req = TIOCSETP; break; case SS_IOCTL_TCGETP: local_req = TIOCGETP; break;/* #endif */
替换为:
#ifdef TIOCGETP case SS_IOCTL_TIOCGETP: local_req = TIOCGETP; break;#endif#ifdef TIOCSETP case SS_IOCTL_TIOCSETP: local_req = TIOCSETP; break;#endif#ifdef TIOCGETP case SS_IOCTL_TCGETP: local_req = TIOCGETP; break;#endif
并保存。
(7) 继续运行make,出现新的错误:
#-----------------------------------------------------## Linking objects to produce 'sim-mpfast' simulator##-----------------------------------------------------gcc -o sim-mpfast `./sysprobe -flags` -DDEBUG -DGRAPHICS -O3 sim-mpfast.o \ main.o syscall.o memory.o regs.o loader.o ss.o endian.o symbol.o eval.o options.o stats.o range.o misc.o -lm -lX11 `./sysprobe -libs`/usr/bin/ld: cannot find –lx11collect2: ld 返回 1make: *** [sim-mpfast] 错误 1
解决方法:安装缺失的软件包libx11-dev:
$ sudo apt-get install libx11-dev
(8) 继续运行make,出现新的错误:
#-----------------------------------------------------## Linking objects to produce 'sim-mpfast' simulator##-----------------------------------------------------gcc -o sim-mpfast `./sysprobe -flags` -DDEBUG -DGRAPHICS -O3 sim-mpfast.o \ main.o syscall.o memory.o regs.o loader.o ss.o endian.o symbol.o eval.o options.o stats.o range.o misc.o -lm -lX11 `./sysprobe -libs`/usr/bin/ld: cannot find -lbsdcollect2: ld 返回 1make: *** [sim-mpfast] 错误 1
解决方法:安装缺失的软件包libbsd-dev:
$ sudo apt-get install libbsd-dev
(9) 继续运行make,出现新的错误:
#-----------------------------------------------------## Linking objects to produce 'sim-mpfast' simulator##-----------------------------------------------------gcc -o sim-mpfast `./sysprobe -flags` -DDEBUG -DGRAPHICS -O3 sim-mpfast.o \ main.o syscall.o memory.o regs.o loader.o ss.o endian.o symbol.o eval.o options.o stats.o range.o misc.o -lm -lX11 `./sysprobe -libs`/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in eval.o/lib/libc.so.6: could not read symbols: Bad valuecollect2: ld 返回 1make: *** [sim-mpfast] 错误 1
打开文件eval.c,64-66行内容为:
#if defined(__CYGWIN32__)#include <errno.h>#endif
删除或注释掉64及66行, 保留:
#include <errno.h>
并保存。
(10) 继续运行make,出现新的错误:
#-----------------------------------------------------## Linking objects to produce 'sim-mpfast' simulator##-----------------------------------------------------gcc -o sim-mpfast `./sysprobe -flags` -DDEBUG -DGRAPHICS -O3 sim-mpfast.o \ main.o syscall.o memory.o regs.o loader.o ss.o endian.o symbol.o eval.o options.o stats.o range.o misc.o -lm -lX11 `./sysprobe -libs`/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in range.o/lib/libc.so.6: could not read symbols: Bad valuecollect2: ld 返回 1make: *** [sim-mpfast] 错误 1
打开文件range.c,64-66行内容为:
#if defined(__CYGWIN32__)#include <errno.h>#endif
删除或注释掉64及66行, 保留:
#include <errno.h>
并保存。
(11) 为了避免出现名为”binary endian does not match host endian”的错误,
将loader.c第474行的”endian_host_word_order”替换为
”endian_host_byte_order”,保存。
(12) 为了修正一处幂运算错误,将sim-mpcache.c第134行:
#define log2(x) ((int)(log(x)/log(2)))
替换为:
/* return log of a number to the base 2 */intlog2(int n){ int power = 0; if (n <= 0 || (n & (n-1)) != 0) panic("log2() only works for positive power of two values"); while (n >>= 1) power++; return power;}
并保存。
(13) 现在,执行:
$ make $ make sim-tests
将会生成包含debug、warning信息及statistics的输出结果,说明执行通过。
(14) 运行
$ ./sim-mpcache -graphics -speed 1 tests/dotbar.ss -p8 -n10000
如果执行成功,则能够看到图表化的cache命中情况
更详细的安装过程,可以参考:
链接:http://pan.baidu.com/s/1jG49drC 密码:jrml
- SimpleScalar的安装与配置
- ubuntu9.10安装simplescalar
- Ubuntu 安装SimpleScalar过程
- simplescalar安装手册
- Ubuntu 安装SimpleScalar过程
- simplescalar自动安装
- Simplescalar安装流程
- Ubuntu 14.10安装simplescalar
- 在Ubuntu12.04上安装SimpleScalar的方法
- Simplescalar在Ubuntu12.04 64位上的安装流程
- SimpleScalar的总体分析
- 在Ubuntu下安装SimpleScalar
- simplescalar under Ubuntu/在Ubuntu10.04下安装simplescalar
- SimpleScalar 模拟器的体系结构框架
- SimpleScalar的安装方法(Red Hat Linux 9.0,gcc3.2.2环境)
- SimpleScalar中分支预测与实例源代码
- Computer Architecture project——simplescalar under Ubuntu/在Ubuntu10.04下安装simplescalar
- Computer Architecture project——simplescalar under Ubuntu/在Ubuntu10.04下安装simplescalar第一部分
- JAVA泛型
- Delegate
- VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)
- springmvc项目不用配置application.xml文件,web.xml不用加载contextlistener
- VS中的常见错误解决
- SimpleScalar的安装与配置
- javascript图片加载---加载大图的一个解决方案
- 指针的随堂笔记
- 图(最短路径)
- mysql命令行的一些操作
- Apache和php在网络中的交互示意图
- Eclipse中Android SDK Manager无法下载的解决办法
- 【BZOJ】2286: [Sdoi2011消耗战【虚树DP】
- CFormView与CView的区别