安装simplescalar所遇到的系列错误,已google发现错误的情况很多,请教拉

内核编译和嵌入式产品的设计与开发
回复
zxdvd_Zhang
帖子: 150
注册时间: 2007-11-19 12:51

安装simplescalar所遇到的系列错误,已google发现错误的情况很多,请教拉

#1

帖子 zxdvd_Zhang » 2009-01-13 1:36

安装方法大致来自安装向导跟
http://sprocessor.blog.51cto.com/160089/27034

SimpleScalar的安装方法
Wisconsin.Madison大学发布的SimpleScalar模拟器是一个开放软件,源代码是公开的,具有良好的可移植性和可扩展性,能够支持各种不同层次设计人员的需求,因而得到了广泛的应用。是开发微处理器芯片前期进行体系结构验证的重要工具,下面介绍其在Red Hat Linux 9.0编译器给gcc 3.2.2环境下的安装方法。
一.确定安装环境
本安装方法适用于Red Hat Linux 9.0操作系统,自带的GCC编译器是GCC 3.2.2版本。其他系列的linux操作系统或是其他版本GCC下安装过程可能有些细节上的不同。
注:因为不同版本的GCC编译器下一些库的定义可能有不同,因此首先要确定一下本机的GCC编译器版本。确定方法是进入命令行输入命令gcc –v得到的结果如图1.1所示:

图1.1
可见本机的GCC版本为GCC 3.2.2,根据simplescalar网站上的一些介绍,该模拟器的开发工具可能是GCC2.7左右,比较接近GCC 3.2.2,因此估计安装过程会比较顺利。
二.获得安装包
完成本安装过程的安装包可以在http://www.simplescalar.com下下载,本安装所需要的安装包共有以下三个

三 建立安装目录,解压安装包
建立安装目录为/root/simplescalar,将安装包复制到安装目录,整个过程如下:

解压缩,命令为tar –zxvf,加压缩完毕后用rm*.tgz命令删除压缩包,整个过程输入命令如下:
tar –zxvf simplesim-3v0d.tgz
tar –zxvf simpletools-2v0.tgz
tar –zxvf simpleutils-2v0.tgz
rm*.tgz
加压缩后得到如下七个文件夹:

四.安装binutils2.5.2
首先用configure命令配置程序的安装环境和参数,生成Makefile文件,整个过程如下:

注:configure命令的参数含义说明
-host:配置安装环境
-target:配置成littleEndian模式
-with-gnu-as 加载汇编器
-with-gnu-ld 加载链接器
-prefix 设置安装目录
此时遇到两个错误,如下所示:

从错误说明可以估计出错误来自于libiberty文件夹下的dummy.c文件。网上一些帖子说是dummy.c中定义的宏functions.def文件中的函数定义与声明不一致引起的,将它们改成一致就可以通过编译。但是这样做的话,继续编译依然会遇到许多错误。这里我试出了最好的方法就是将 dummy.c文件中的内容全部删除(即将dummy.c变成空文件)然后再make一次,这回不报任何错误,编译一次通过!

这一步开始我的错误跟他的不同

make
make[1]: 正在进入目录 `/usr/local/src/binutils-2.5.2/libiberty'
echo "# !Automatically generated from ./functions.def"\
"- DO NOT EDIT!" >needed2.awk
grep '^DEFVAR(' < ./functions.def \
| sed -e '/DEFVAR/s|DEFVAR.\([^,]*\).*|/\1/ { printf "#ifndef NEED_\1\\n#define NEED_\1\\n#endif\\n" }|' \
>>needed2.awk
grep '^DEFFUNC(' < ./functions.def \
| sed -e '/DEFFUNC/s|DEFFUNC.\([^,]*\).*|/\1/ { printf "#ifndef NEED_\1\\n#define NEED_\1\\n#endif\\n" }|' \
>>needed2.awk
gcc -c -g -I. -I./../include ./dummy.c 2>/dev/null
(gcc -o dummy -g dummy.o ) >errors 2>&1 || true
echo "/* !Automatically generated from ./functions.def"\
"- DO NOT EDIT! */" >lconfig.h
awk -f needed2.awk <errors >>lconfig.h
cp lconfig.h config.h
gcc -c -g -I. -I./../include argv.c
gcc -c -g -I. -I./../include basename.c
gcc -c -g -I. -I./../include concat.c
gcc -c -g -I. -I./../include cplus-dem.c
cplus-dem.c: 在函数‘mop_up’中:
cplus-dem.c:564: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘demangle_template’中:
cplus-dem.c:931: 警告: 隐式声明与内建函数‘abort’不兼容
cplus-dem.c: 在函数‘gnu_special’中:
cplus-dem.c:1538: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘forget_types’中:
cplus-dem.c:2290: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘string_delete’中:
cplus-dem.c:2651: 警告: 隐式声明与内建函数‘free’不兼容
gcc -c -g -I. -I./../include fdmatch.c
gcc -c -g -I. -I./../include getopt.c
gcc -c -g -I. -I./../include getopt1.c
gcc -c -g -I. -I./../include getruntime.c
gcc -c -g -I. -I./../include floatformat.c
gcc -c -g -I. -I./../include obstack.c
obstack.c: 在函数‘_obstack_free’中:
obstack.c:341: 警告: 隐式声明与内建函数‘abort’不兼容
obstack.c: 在函数‘obstack_free’中:
obstack.c:375: 警告: 隐式声明与内建函数‘abort’不兼容
gcc -c -g -I. -I./../include spaces.c
spaces.c: 在函数‘spaces’中:
spaces.c:50: 警告: 与内建函数‘malloc’类型冲突
gcc -c -g -I. -I./../include strerror.c
strerror.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’的上一个声明在此
make[1]: *** [strerror.o] 错误 1
make[1]:正在离开目录 `/usr/local/src/binutils-2.5.2/libiberty'
make: *** [all-libiberty] 错误 2



运行make install命令,这时binutils-2.5.2安装成功!
zxdvd_Zhang
帖子: 150
注册时间: 2007-11-19 12:51

Re: 安装simplescalar所遇到的系列错误,已google发现错误的情况很多,请教拉

#2

帖子 zxdvd_Zhang » 2009-01-13 1:41

我不是很懂编译软件,然后我自己大致看了下dummy.c文件,注释了#undef DEFVAR这一行,然后make结果如下
make
make[1]: 正在进入目录 `/usr/local/src/binutils-2.5.2/libiberty'
gcc -c -g -I. -I./../include ./dummy.c 2>/dev/null
(gcc -o dummy -g dummy.o ) >errors 2>&1 || true
echo "/* !Automatically generated from ./functions.def"\
"- DO NOT EDIT! */" >lconfig.h
awk -f needed2.awk <errors >>lconfig.h
cp lconfig.h config.h
gcc -c -g -I. -I./../include argv.c
gcc -c -g -I. -I./../include basename.c
gcc -c -g -I. -I./../include concat.c
gcc -c -g -I. -I./../include cplus-dem.c
cplus-dem.c: 在函数‘mop_up’中:
cplus-dem.c:564: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘demangle_template’中:
cplus-dem.c:931: 警告: 隐式声明与内建函数‘abort’不兼容
cplus-dem.c: 在函数‘gnu_special’中:
cplus-dem.c:1538: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘forget_types’中:
cplus-dem.c:2290: 警告: 隐式声明与内建函数‘free’不兼容
cplus-dem.c: 在函数‘string_delete’中:
cplus-dem.c:2651: 警告: 隐式声明与内建函数‘free’不兼容
gcc -c -g -I. -I./../include fdmatch.c
gcc -c -g -I. -I./../include getopt.c
gcc -c -g -I. -I./../include getopt1.c
gcc -c -g -I. -I./../include getruntime.c
gcc -c -g -I. -I./../include floatformat.c
gcc -c -g -I. -I./../include obstack.c
obstack.c: 在函数‘_obstack_free’中:
obstack.c:341: 警告: 隐式声明与内建函数‘abort’不兼容
obstack.c: 在函数‘obstack_free’中:
obstack.c:375: 警告: 隐式声明与内建函数‘abort’不兼容
gcc -c -g -I. -I./../include spaces.c
spaces.c: 在函数‘spaces’中:
spaces.c:50: 警告: 与内建函数‘malloc’类型冲突
gcc -c -g -I. -I./../include strerror.c
strerror.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’的上一个声明在此
make[1]: *** [strerror.o] 错误 1
make[1]:正在离开目录 `/usr/local/src/binutils-2.5.2/libiberty'
make: *** [all-libiberty] 错误 2
zxdvd_Zhang
帖子: 150
注册时间: 2007-11-19 12:51

Re: 安装simplescalar所遇到的系列错误,已google发现错误的情况很多,请教拉

#3

帖子 zxdvd_Zhang » 2009-01-13 1:43

大家帮忙看看,发表下看法,说一说应该是那个文件的问题,然后大致应该怎么改呢,谢谢拉
应该有很多人用过吧,希望多多指点,谢谢拉
phoenix-2007
帖子: 3
注册时间: 2007-10-19 22:48

Re: 安装simplescalar所遇到的系列错误,已google发现错误的情况很多,请教拉

#4

帖子 phoenix-2007 » 2009-04-16 16:36

我的也是这个错误,有没有人帮忙改改阿!非常感谢阿!
回复