手动编译运行speccpu2000中的benchmarks
目前需要测试模拟器的性能,而又只能获得speccpu2000中benchmarks的源码。别无选择,只有自己手动编译,原以为写个简单的makefile和一个运行自动编译的shell脚本,能很快解决问题!真正实现的时候,才发现存在很多移植和编译选项设置问题(当然这些在benchmark的docs目录下有部分说明,你可以去查看)。
开始之前确保你的系统有:
         一份speccpu2000的benchmarks源码
         GNU gcc 编译器
         文本浏览器(出错的时候可以查看源码,推荐Kscope,其跟windows source insight类似)
GNU gcc 简介
作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个 C 语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、Fortran等,以及支持数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了GNUCompiler Collection 也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于各种硬件平台的支持,概括起来就是一句话:无所不在。几乎所有有点实际用途的硬件平台,甚至包括有些不那么有实际用途的硬件平台。
gcc 的几个前端
gcc认为预处理后的文件(.i)是C文件,并且设定C形式的连接
- g++认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接.
在 GCC 4.0 之前,g77 是 GCC 的一部分;此后,gFortran是 GCC 的一部分。
Makefile 简介
Makefile 基本上就是目标(target), 依赖(dependencies) 和动作三者所组成的一连串规则。而 make 就会根据 Makefile 的规则来决定如何编译 (compile) 和连结 (link) 程序。实际上,make 可做的不只是编译和连结程序,例如 FreeBSD 的 port collection 中, Makefile 还可以做到自动下载原始程式套件,解压缩 (extract) ,修补(patch),设定,然後编译,安装至系统中。
一个简单的makefile例子:
 
编译benchmarks
编译时要多参照相应的文档和默认的Makefile, 其中有很多说明,例如移植性选项的设置;fortran 90 的benchmark,有的编译时对源文件有编译顺序要求;252.eon有几个原文件不需要直接编译等等。同时编译时最好使用静态连接,使你的可执行文件移植性更强!如果你需要我的Makefile可以跟我联系!
运行benchmarks
CINT2000程序在不同测试集下的运行方式
CFP2000程序在不同测试集下的运行方式
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号