错误Ubuntu9.04下安装SimpleScalar

ubuntu9.04  时间:2021-03-11  阅读:()

Ubuntu 9.04下安装SimpleScalar

东南大学 WZK

1 安装环境

Ubuntu 9.04,GCC-4.3.3 该操作系统自带 。本安装过程在以上环境中测试通过如果所在机器GCC版本不是4.3.3可能安装过程会有所不同但总体的思路一致。

2 软件下载

首先到http://w w w.s imp le s c alar.c om上下载以下三个tar包。

整个安装过程只需这个三个软件包即可。

3 安装过程

3.1解压缩

假设把这三个软件包放在目录/root下。我们新建一个simplescalar目录并将这三个包复制放入。然后解压缩再将三个压缩包删除。命令如下,假设当前在/root下。

结果如下

3.2设置环境变量

需设置三个环境变量 以方便后面的安装不设置也行。

设置完成后可以依次输入echo$HOST,echo $TARGET,echo $IDIR 以检查设置是否正

确。 比如输入echo$HO S T输出为i386-ubuntu-l inux

3.3编译b inu ti ls 2.5.2

进入b inu ti ls 2.5.2并配置一下然后编译安装。在这里将遇到许多问题后面将会

一一举出。命令如下

简单解释一下上述命令 c onfigur e是Linux世界的一个标准它是一个s hell文件。一般标准的程序都会提供一个c onfigure脚本 以提供对程序的配置功能然后根据该配置来生成最终的Makefile 以便编译。注意的是-prefix前面要有一个空格与-w ith-gnu-ld分开。

首先会碰到第一个编译错误gcc-c-g-I. -I./. ./include strerror.cstrerror.c:467:错误 对„sys_nerr‟的静态声明出现在非静态声明之后

/usr/include/bits/sys_errlist.h:27:错误 „sys_nerr‟的上一个声明在此s trerror.c:468:错误 与„s ys_errlis t‟类型冲突

/usr/inc lude/bits/sys_errlist.h:28:错误 „sys_errlist‟的上一个声明在此make[1]: *** [strerror.o]错误1make[1]:正在离开目录`/root/s imples c alar/binuti ls-2.5.2/libibe rty'make: *** [all-libibe rty]错误2

解决进入/root/s imples c alar/binuti ls-2.5.2/libibe rty打开s trerror.c在第25行加入#undef NEED_s ys_errlis t

第二个错误bis on-y -d./ldgram.ymake[1]:bis on命令未找到make[1]: *** [ldgram.c]错误127make[1]:正在离开目录`/root/s imples c alar/binuti ls-2.5.2/ld'make: *** [all-ld]错误2

这是由于没有安装bison的缘故,执行apt-get install flex b ison安装bison

第三个错误

./ldle x.l:在函数„yy_inp ut‟中:

./ldlex.l:477:错误 „yy_c urrent_buffer‟未声明(在此函数内第一次使用)

./ldlex.l:477:错误 (即使在一个函数内多次出现每个未声明的标识符在其

./ldlex.l:477:错误 所在的函数内也只报告一次。 )make[1]: *** [ldlex.o]错误1make[1]:正在离开目录`/root/s imples c alar/binuti ls-2.5.2/ld'make: *** [all-ld]错误2

解决进入/root/simples c alar/binuti ls-2.5.2/ld,打开ldle x.l定位到476行将小写的yy_c urrent_buffer改为大写的YY_C URRENT_BUFFE R。

第四个错误

/usr/lib/gc c/i486-linux-gnu/4.3.3/include/varargs.h:4:2:错误 #error "GCC no longerimplem ents<varargs.h>."

/usr/lib/gc c/i486-linux-gnu/4.3.3/inc lude/varargs.h:5:2:错误 #error "Revis e your c ode touse<stdarg.h>."

解决 进入/root/s imples c alar/binuti ls-2.5.2/ld,打开ldmi sc.c  定位到 24行 将#include<vararg.h>改为#include<stdarg.h>

第五个错误ldmis c.c:在函数„info_ms g‟中:ldmisc.c:344:错误 expected declaration specifiers before„va_dcl‟ldmis c.c:348:15:错误 宏“va_start”需要2个参数但只给出了1个ldm is c

解决

这是因为在stdarg.h里已经不再支持va_dcl所以编译无法通过。经过观察发现使用va_dcl的地方都是用来打印消息的实际上varargs.h与stdarg.h都是为了用来支持可变参数函数的。如printf,一般printf的声明可以为printf( const char*fmt,…) 用“…”表示可变参数 也可以使用printf(c onst char*fmt,va_lis t ap)来表示还有第三种就是printf(va_list )va_dcl。但是第三种方式在GCC-3.4.3里并不支持。 所以有两种方法来解决这个问题一是将所以第三种声明改为第二种声明这个方法比较慢。二是将第三种声明的函数以以下方式注释掉因为它们只是打印一些信息并不影响功能所以可以不需要这些函数功能 。

终于没错了make install一下。发现simplescalar下多了一个bin文件夹

3.4编译simple s c alar

这个步骤比较简单编译过程中没有错误。

不然最后无法使用

3.5编译gcc-2.6.3

这个步骤可能会碰到较多问题。

第一个问题cccp.c:194:错误 与„sys_errlist‟类型冲突

/usr/inc lude/bits/sys_errlist.h:28:错误 „sys_errlist‟的上一个声明在此

解决进入/root/simplescalar/gcc-2.6.3打开cccp.c,定位到191 在上一行加入#defineb s d4_4

第二个问题gcc-c-DCROSS_COMPILE-DIN_GCC-DPOSIX-g -I. -I. -I./config sdbout.cs dbout.c:57:18:错误 s yms.h没有该文件或目录s dbout.c:在函数„gen_fake_lab el‟中:

经过确认在GCC-4.3.3之下存在gsyms.h而不存在syms.h所以需改变这里的宏定义解决方法是在这段代码之前(53行处)加一个#undef USG这样就会将gsyms.h包含进去。

第三个问题in s n-o utp ut.c:在函数„o utp ut_110‟中:ins n-output.c:675:错误 缺少结尾的"字符

ins n-output.c:676:错误 程序中有游离的„\‟ins n-output.c:676:错误 „s ll‟未声明(在此函数内第一次使用)ins n-output.c:676:错误 (即使在一个函数内多次出现每个未声明的标识符在其ins n-output.c:676:错误 所在的函数内也只报告一次。 )insn-output.c:676:错误 expec ted„ ; ‟before„t‟

打开in s n-o utp ut.c定位到675行。找到如下代码

这里会出错的原因是因为在C语言里面字符串如果分多行写的话必须以“\”结尾表示连接上下两行。注意的是这里会产生这个错误的原因是F lex F lex是L inux下词法分析语法分析代码自动生成工具版本的问题。这个in s n-output.c是由F le x 自动生成的 由于Re dhat-EL4上的Fl ex版本与该项目的版本不一致故导致生成文件也有点不同。如果直接修改ins n-output.c文件中的所有这些问题只是治标行为如果c lean过一次的话再重新编译又得再一次修改。治本的方法是找一个能正确生成代码的Fle x版本。本次安装采用“治标”的方法为所有出现这个问题的地方添加一个”\”。

第五个问题gcc.c:172:错误 与„sys_errlis t‟类型冲突

/usr/inc lude/bits/sys_errlist.h:28:错误 „sys_errlist‟的上一个声明在此gcc.c:在函数„translate_options‟中:

这个问题也与前面类似就不再详述解决办法是在./gcc.c的169行添加一个#defineb s d4_4。

第六个问题

./cp/g++.c:90:错误 与„sys_errlist‟类型冲突

/usr/inc lude/bits/sys_errlist.h:28:错误 „sys_errlist‟的上一个声明在此

./cp/g++.c:在函数„fatal‟中:

这个问题也与前面类似就不再详述解决办法是在./cp/g++.c的169行添加一个#defineb s d4_4。

总算可以了。呵呵

4 HelloW orld测试

走到这里时 已经将simplescalar以及它的交叉编译器都编译安装好。下面进行测试假设现在simplescalar目录下,写一个hello.c文件内容如下

以如下步骤编译

运行结果如下s im: ** starting functional s imula tion**

Hello worldsim: ** simulation statis tic s **sim_num_insn 7691#total number of instructions executed

sim_num_refs 4234#total number of loads and stores executed

sim_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 init'ed`.data'and uninit'ed`.bss' size in bytesld_stack_base 0x7fffc000#program stack segment base(highest address in stack)

ld_stack_size 16384#program initial stack sizeld_prog_entry 0x00400140#program entry point (initial PC)ld_environ_base 0x7fff8000#program environment base address addressld_target_big_endian 0#target executable endian-ness,non-zero if big endianmem.page_count 26#total number of pages allocatedmem.page_mem 104k#total size of memory pages allocatedmem.ptab_misses 26#total first level page table missesmem.ptab_accesses 476132#total page table accessesmem.ptab_miss_rate 0.0001#first level page table miss rate

HostKvm:夏季优惠,香港云地/韩国vps终身7折,线路好/机器稳/适合做站

hostkvm怎么样?hostkvm是一家国内老牌主机商家,商家主要销售KVM架构的VPS,目前有美国、日本、韩国、中国香港等地的服务,站长目前还持有他家香港CN2线路的套餐,已经用了一年多了,除了前段时间香港被整段攻击以外,一直非常稳定,是做站的不二选择,目前商家针对香港云地和韩国机房的套餐进行7折优惠,其他套餐为8折,商家支持paypal和支付宝付款。点击进入:hostkvm官方网站地址hos...

酷番云-618云上秒杀,香港1核2M 29/月,高防服务器20M 147/月 50M 450/月,续费同价!

官方网站:点击访问酷番云官网活动方案:优惠方案一(限时秒杀专场)有需要海外的可以看看,比较划算29月,建议年付划算,月付续费不同价,这个专区。国内节点可以看看,性能高IO为主, 比较少见。平常一般就100IO 左右。优惠方案二(高防专场)高防专区主要以高防为主,节点有宿迁,绍兴,成都,宁波等,节点挺多,都支持防火墙自助控制。续费同价以下专场。 优惠方案三(精选物理机)西南地区节点比较划算,赠送5...

EdgeNat 新年开通优惠 - 韩国独立服务器原生IP地址CN2线路七折优惠

EdgeNat 商家在之前也有分享过几次活动,主要提供香港和韩国的VPS主机,分别在沙田和首尔LG机房,服务器均为自营硬件,电信CN2线路,移动联通BGP直连,其中VPS主机基于KVM架构,宿主机采用四路E5处理器、raid10+BBU固态硬盘!最高可以提供500Gbps DDoS防御。这次开年活动中有提供七折优惠的韩国独立服务器,原生IP地址CN2线路。第一、优惠券活动EdgeNat优惠码(限月...

ubuntu9.04为你推荐
网易网盘关闭入口网易网盘里面有好的东西,怎么才能共享出来?【已解决】vc组合洛天依的组合都有谁梦之队官网史上最强的nba梦之队是哪一年商标注册流程及费用申请商标的流程和花费及时间是什么李子柒年入1.6亿宋朝鼎盛时期 政府财政收入有将近1亿贯铜钱,那么GDP是多少呢?同ip站点查询如何查看几个站是不是同IP长尾关键词挖掘工具外贸长尾关键词挖掘工具哪个好用www.kk4kk.com猪猪影院www.mlzz.com 最新电影收费吗?www.119mm.comwww.993mm+com精品集!mole.61.com摩尔大陆?????
厦门虚拟主机 vps代理 59.99美元 163网 免备案cdn 免费静态空间 php免费空间 架设服务器 七夕促销 169邮箱 1g空间 稳定免费空间 cdn加速是什么 个人免费主页 无限流量 lamp是什么意思 ledlamp supercache 万网注册 江苏徐州移动 更多