歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 12.04下SimpleScalar_PISA 的安裝

Ubuntu 12.04下SimpleScalar_PISA 的安裝

日期:2017/2/28 15:34:11   编辑:Linux教程

(1)首先准備需要的安裝文件,如果沒有可到以下地址下載:

simpletools‐2v0.tgz:

http://www.simplescalar.com/tools.html

simplesim‐3v0d‐with‐cheetah.tar.gz:

http://www.ict.kth.se/courses/IS2202/software

simpleutils‐990811.tar.gz:

http://www.eecs.umich.edu/mirv/software

gcc‐2.7.2.3.ss.tar.gz:

http://american.cs.ucdavis.edu/RAD/gcc‐2.7.2.3.ss.tar.gz

(2)打開終端,設置環境變量為:

(安裝目錄)

$ exportIDIR=/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 installbuild‐essential flex bison

在ubuntu12.04裡還需要gcc-multilib

$ sudo apt-get install gcc-multilib

(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 xvfzsimplesim‐3v0d‐with‐cheetah.tar.gz

$ cd simplesim‐3.0

$ make config‐pisa

$ make

測試:

$ ./sim‐safetests/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>”;


1.為了解決decl.c 的一處錯誤信息, 名為“invalidlvalue 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 的權限為可執行,不然會提示“Permissiondenied”!

使用命令:

$ chmod +x ar ranlib

或在ar 及ranlib 的屬性中修改。

3.再次執行“makeLANGUAGES...”後,提示缺少文件stubs-32.h

$ apt-file update

$ apt-file search stubs-32.h

libc6-dev:/usr/include/i386-linux-gnu/gnu/stubs-32.h

新版的ubuntu更改了stubs-32.h的存放位置。可執行

$ sudo cp/usr/include/i386-linux-gnu/gnu/stubs-32.h /usr/include/gnu/stubs-32.h


4.再次執行“makeLANGUAGES...”後,如果需要則刪除cxxmain.c 的2978‐2979 行。

現在,運行:

$ make LANGUAGES=c CFLAGS=‐OCC="gcc ‐m32"

$ make enquire

$ ../simplesim‐3.0/sim‐safe./enquire ‐f > float.h‐cross

$ make LANGUAGES=c CFLAGS=‐OCC="gcc ‐m32" install


5.這時可能會有錯誤“sendmsg.c:36:parse error”

在文件objc/sendmsg.c的第35行加上"#defineSTRUCT_VALUE 0"

這時再makeinstall應該就沒有問題了。

測試:新建hello.c,內容為:

#include<stdio.h>

int main(int argc, char* argv)

{

printf("HelloWorld!\n");

return 0;

}

然後用如下命令編譯:

$ $IDIR/bin/sslittle‐na‐sstrix‐gcc‐o hello hello.c

生成文件hello,可用如下方式運行:

$ $IDIR/simplesim‐3.0/sim‐safehello

如果輸出"HelloWorld!",說明安裝成功!

Copyright © Linux教程網 All Rights Reserved