




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ubuntu9.04下安装SimpleScalar 东南大学 WZK1 安装环境Ubuntu9.04, GCC-4.3.3 (该操作系统自带)。本安装过程在以上环境中测试通过,如果所在机器GCC版本不是4.3.3,可能安装过程会有所不同,但总体的思路一致。2 软件下载首先到上下载以下三个tar包。simplesim-3v0d.tgzsimpletools-2v0.tgzsimpleutils-2v0.tgz 整个安装过程只需这个三个软件包即可。3 安装过程3.1 解压缩假设把这三个软件包放在目录/root下。我们新建一个simplescalar目录,并将这三个包复制放入。然后解压缩,再将三个压缩包删除。命令如下,假设当前在/root下。mkdir simplescalar ;建立文件夹cp simplesim-3v0d.tgz simplescalar/ ;复制cp simpleutils-2v0.tgz simplescalar/cp simpletools-2v0.tgz simplescalar/cd simplescalar/ ;进入该文件夹tar zxvf simplesim-3v0d.tgz ;对tar包进行解压缩,由于该包 tar zxvf simpletools-2v0.tgz ;有gzip压缩,故加上z选项,xtar zxvf simpleutils-2v0.tgz ;是解压tar, v是列出文件,f指明rm f *.tgz ;要解压的文件ls结果如下 3.2 设置环境变量 需设置三个环境变量,以方便后面的安装,不设置也行。export HOST=i386-ubuntu-linux ;格式为 机器类型-公司-系统export TARGET=sslittle-na-sstrix ;设置为小字端机器export IDIR=/root/simplescalar ;将结果安装到/root/simplescalar 设置完成后可以依次输入echo $HOST,echo $TARGET,echo $IDIR,以检查设置是否正确。比如输入echo $HOST,输出为i386-ubuntu-linux3.3 编译binutils2.5.2 进入binutils2.5.2并配置一下,然后编译,安装。在这里将遇到许多问题,后面将会一一举出。命令如下:cd binutils-2.5.2./configure -host=$HOST -target=$TARGET -with-gnu-as -with-gnu-ld -prefix=$IDIRmake简单解释一下上述命令,configure是Linux世界的一个标准,它是一个shell文件。一般标准的程序都会提供一个configure脚本,以提供对程序的配置功能,然后根据该配置来生成最终的Makefile,以便编译。注意的是-prefix前面要有一个空格与-with-gnu-ld分开。首先会碰到第一个编译错误:gcc -c -g -I. -I././include strerror.cstrerror.c:467: 错误: 对sys_nerr的静态声明出现在非静态声明之后/usr/include/bits/sys_errlist.h:27: 错误: sys_nerr的上一个声明在此strerror.c:468: 错误: 与sys_errlist类型冲突/usr/include/bits/sys_errlist.h:28: 错误: sys_errlist的上一个声明在此make1: * strerror.o 错误 1make1:正在离开目录 /root/simplescalar/binutils-2.5.2/libibertymake: * all-libiberty 错误 2解决:进入/root/simplescalar/binutils-2.5.2/libiberty 打开strerror.c,在第25行加入#undef NEED_sys_errlist第二个错误:bison -y -d ./ldgram.ymake1: bison:命令未找到make1: * ldgram.c 错误 127make1:正在离开目录 /root/simplescalar/binutils-2.5.2/ldmake: * all-ld 错误 2这是由于没有安装bison的缘故,执行apt-get install flex bison安装bison第三个错误:./ldlex.l: 在函数yy_input中:./ldlex.l:477: 错误: yy_current_buffer未声明(在此函数内第一次使用)./ldlex.l:477: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其./ldlex.l:477: 错误: 所在的函数内也只报告一次。)make1: * ldlex.o 错误 1make1:正在离开目录 /root/simplescalar/binutils-2.5.2/ldmake: * all-ld 错误 2解决:进入/root/simplescalar/binutils-2.5.2/ld,打开ldlex.l 定位到476行,将小写的yy_current_buffer改为大写的YY_CURRENT_BUFFER。第四个错误:/usr/lib/gcc/i486-linux-gnu/4.3.3/include/varargs.h:4:2: 错误: #error GCC no longer implements ./usr/lib/gcc/i486-linux-gnu/4.3.3/include/varargs.h:5:2: 错误: #error Revise your code to use .解决:进入/root/simplescalar/binutils-2.5.2/ld,打开ldmisc.c,定位到24行,将#include改为#include第五个错误:ldmisc.c: 在函数info_msg中:ldmisc.c:344: 错误: expected declaration specifiers before va_dclldmisc.c:348:15: 错误: 宏“va_start”需要 2 个参数,但只给出了 1 个ldmisc.c:357: 错误: expected =, , ;, asm or _attribute_ before va_dcl解决:这是因为在stdarg.h里已经不再支持 va_dcl,所以编译无法通过。经过观察发现使用va_dcl的地方都是用来打印消息的(实际上varargs.h与stdarg.h都是为了用来支持可变参数函数的。如printf, 一般printf的声明可以为 printf( const char*fmt, ), 用“”表示可变参数, 也可以使用 printf( const char* fmt, va_list ap)来表示,还有第三种就是 printf( va_list ) va_dcl。但是第三种方式在GCC-3.4.3里并不支持。)所以有两种方法来解决这个问题,一是将所以第三种声明改为第二种声明,这个方法比较慢。二是将第三种声明的函数以以下方式注释掉(因为它们只是打印一些信息,并不影响功能,所以可以不需要这些函数功能)。终于没错了,make install一下。发现simplescalar下多了一个bin文件夹 3.4 编译simplescalar 这个步骤比较简单,编译过程中没有错误。cd simplesim-3.0make config-pisa ;使它支持PISA,不然最后无法使用make3.5 编译gcc-2.6.3这个步骤可能会碰到较多问题。cd gcc-2.6.3./configure -host=$HOST -target=$TARGET -with-gnu-as -with-gnu-ld -prefix=$IDIRmake第一个问题:cccp.c:194: 错误: 与sys_errlist类型冲突/usr/include/bits/sys_errlist.h:28: 错误: sys_errlist的上一个声明在此解决:进入/root/simplescalar/gcc-2.6.3,打开cccp.c,定位到191,在上一行加入#define bsd4_4第二个问题:gcc -c -DCROSS_COMPILE -DIN_GCC -DPOSIX -g -I. -I. -I./config sdbout.csdbout.c:57:18: 错误: syms.h:没有该文件或目录sdbout.c: 在函数gen_fake_label中:经过确认,在GCC-4.3.3之下存在gsyms.h而不存在syms.h,所以需改变这里的宏定义,解决方法是在这段代码之前(53行处)加一个 #undef USG,这样就会将gsyms.h包含进去。第三个问题:insn-output.c: 在函数output_110中:insn-output.c:675: 错误: 缺少结尾的 字符insn-output.c:676: 错误: 程序中有游离的insn-output.c:676: 错误: sll未声明(在此函数内第一次使用)insn-output.c:676: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其insn-output.c:676: 错误: 所在的函数内也只报告一次。)insn-output.c:676: 错误: expected ; before t打开insn-output.c,定位到675行。找到如下代码:这里会出错的原因是因为,在C语言里面字符串如果分多行写的话必须以“”结尾,表示连接上下两行。注意的是这里会产生这个错误的原因是Flex (Flex是Linux下词法分析,语法分析代码自动生成工具)版本的问题。这个insn-output.c是由Flex自动生成的,由于 Redhat-EL4上的Flex版本与该项目的版本不一致,故导致生成文件也有点不同。如果直接修改 insn-output.c文件中的所有这些问题,只是治标行为,如果clean过一次的话,再重新编译,又得再一次修改。治本的方法是,找一个能正确生成代码的Flex版本。本次安装采用“治标”的方法,为所有出现这个问题的地方添加一个”。第五个问题:gcc.c:172: 错误: 与sys_errlist类型冲突/usr/include/bits/sys_errlist.h:28: 错误: sys_errlist的上一个声明在此gcc.c: 在函数translate_options中:这个问题也与前面类似,就不再详述,解决办法是在./gcc.c的169行添加一个#define bsd4_4。第六个问题:./cp/g+.c:90: 错误: 与sys_errlist类型冲突/usr/include/bits/sys_errlist.h:28: 错误: sys_errlist的上一个声明在此./cp/g+.c: 在函数fatal中:这个问题也与前面类似,就不再详述,解决办法是在./cp/g+.c的169行添加一个#define bsd4_4。总算可以了。呵呵4 HelloWorld测试走到这里时,已经将simplescalar以及它的交叉编译器都编译安装好。下面进行测试假设现在 simplescalar目录下, 写一个hello.c文件内容如下:#include intmain( int argc, char* argv )printf(“Hello Worldn”);return 0;以如下步骤编译:bin/sslittle-na-sstrix-gcc hello.csimplesim-3.0/sim-safe a.out运行结果如下:sim: * starting functional simulation *Hello worldsim: * simulation statistics *sim_num_insn 7691 # total number of instructions executedsim_num_refs 4234 # total number of loads and stores executedsim_elapsed_time 1 # total simulation time in secondssim_inst_rate 7691.0000 # simulation speed (in insts/sec)ld_text_base 0x00400000 # program text (code) segment baseld_text_size 70128 # program text (code) size in bytesld_data_base 0x10000000 # program initialized data segment baseld_data_size 8192 # program inited .data and uninited .bss size in by
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 17盼第2课时 同步 公开课一等奖创新教学设计 学习任务单 分层练习 听写
- 2026年中考语文文言文专练专题07古诗词鉴赏之对比阅读(讲义)(学生版+解析)
- 骨扫描结果解读
- 创业者法律培训课件
- 酒店客房月度工作汇报
- 炎症因子与组织再生-洞察及研究
- 创业健身房课件
- 果树整形修剪技术
- 勘察钻孔业务培训课件
- 儿童用药评估-洞察及研究
- 注塑加工项目可行性研究报告
- 痛风中医辨证论治课件
- 【课件】工作危害分析法(JHA)专项培训课件丨
- 带储热的液态空气储能系统性能的多维度剖析与优化策略
- 水体环境完整版本
- 新北师大版四年级数学上册第二单元(线与角)课后练习题及答案1
- DB1311T 091-2025 旧水泥混凝土路面多锤头碎石化施工技术规范
- 采砂作业合同协议
- 排他协议合同协议
- 经济数学微积分 杨慧卿 第4版 教案 第1-3章 函数、极限与连续;一元函数微积分;一元函数积分学
- 脑卒中护理新进展
评论
0/150
提交评论