Ubuntu 14.10安裝simplescalar

通過兩天的安裝,終於把simplescalar安裝成功,安裝過程當中在網上找了不少資料,可是不少都是關於低版本ubuntu安裝的過程,並且按照這些教程也沒有安裝成功,來記錄一下安裝中出現的問題及解決方案。html

1、安裝參考文章linux

http://godblesstangkk.blogspot.com/2013/01/install-simplescalar-30-on-ubuntu-1204.htmlc++

2、安裝環境信息ubuntu

安裝的電腦系統是ubuntu14.10 64位操做系統,以下圖:bash

3、安裝過程less

一、下載安裝文件,能夠到此下載:http://pan.baidu.com/s/1gduH9sf 測試

下載的包中包含了4個安裝須要的tar包(simplesim-3v0e.tgaz, simpletools-2v0.tgz,simpleutils-990811.tar.gz,gcc-2.7.2.3.ss.tar.gz)和一個文件夾(install needed),install needed文件夾中包含了兩個文件ar 和 ranlib,這兩個文件會在後面安裝gcc-2.7.2.3時用到。flex

二、設置環境變量ui

1> 編譯用戶目錄下的.bashrc文件,在次文件最後加上下面的語句:spa

export IDIR=/any/directory/you/choose/(你本身要安裝的目錄)

export HOST=i686-pc-linux

export TARGET=sslittle-na-sstrix

而後記得執行一下命令「source .bashrc」讓設置的環境變量生效!

注:IDIR是軟件安裝的目錄,選擇本身的安裝目錄; HOST中的i686指定了模擬器目標CPU的體系結構,其餘可能的值是「arm", "mips", "i386"等等,pc指定了公司,linux指定了你的操做系統,其餘可能的值是」solaris「, 」gnu「等等;TARGET部分指定系統是用大尾端存儲仍是小尾段存儲。

 

2> 建立要安裝的文件夾,能夠經過使用」mkdir $IDIR"來建立,而後把全部安裝要用到的tar包都移動這個目錄中。

3> 更新本身電腦中的軟件,使用sudo apt-get update 來更新。

而後安裝下面的軟件包(可使用指令sudo apt-get install <package name>來安裝):

build-essential

flex

bison

gcc-multilib(先不要安裝)

g++-multilib(先不要安裝)

注:此時先安裝上面的三個軟件包(build-essential、flex、bison),gcc-multilib和g++-multilib先不要安裝,由於我在安裝的時候就直接安裝了這兩個包,致使在安裝gcc-2.7.2.3時出現了一些錯誤,錯誤的緣由是安裝gcc-multilib和g++-multilib時會直接安裝更新本身系統的gcc,由於沒有安裝這兩個包以前個人gcc是4.9版本,安裝以後gcc變成5.2.1了;因此猜想出錯的緣由是gcc版本過高了,具體的錯誤在後面會提到。

 

三、解壓Simpletools-2v0

執行下面的指令:

cd $IDIR

tar xvfz simpletools-2v0.tgz

rm -rf gcc-2.6.3   (刪除這個文件夾,由於會安裝新的版本的gcc,就是gcc-2.7.2.3)

完成這寫指令後,在$IDIR目錄下會獲得ssbig-na-sstrix和sslittle-na-sstrix文件夾,它們中都包含了一個include文件夾和一個lib文件夾。

四、安裝SimpleUtils-990811

執行下面的指令:

cd $IDIR

tar xvfz simpleutils-990811.tar.gz

cd simpleutils-990811

而後修改ld目錄下的ldlex.l文件,把此文件中的「yy_current_buffer"替換成YY_CURRENT_BUFFER".

而後回到simpleutils-990811目錄,執行下面的命令:

./confing --host=$HOST --target=$TARGET --with-gnu-as --with-gnu-ld --prefix=$IDIR

make

make install

執行完這些命令後,在$IDIR目錄下會有bin、lib、include、man、share等文件夾(其實還有f2c-1994.09.27和glibc-1.09兩個文件夾),另外,在sslittle-na-sstrix文件夾下多了一個bin文件夾)

五、安裝simplesim-3v03

首先,解壓文件simplesim-3v0e.tgz,執行下面的命令:

cd $IDIR

tar xvfz simplesim-3v0e.tgz

cd simplesim-3.0

make config-pisa

make

注:其中make config-pisa指令要根據本身的須要來選取,若是你須要alpha結果,要改變target配置,而且須要make clean  而後在make config-alpha.

若是這些命令都成功執行後,會看到」my work is done here ..."的消息.

而後能夠運行一下模擬器試試,運行下面的命令:

./sim-safe tests/bin.little/test-math

而後你會看到像下面的信息:

sim: ** starting functional simulation **
pow(12.0, 2.0) == 144.000000
pow(10.0, 3.0) == 1000.000000
pow(10.0, -3.0) == 0.001000

...

六、安裝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

此時,咱們還不能編譯,由於因爲各類不兼容性會致使很是多的錯誤,咱們先來修改一下源程序。

1> 使咱們對當前的目錄有寫的權限,執行下面的命令

chmod -R +w .  (不要忘記了後面的那個小點 」 . ")

2> 修改Makefile文件,在130行的行末添加「-I/usr/include"

3> 修改protoize.c文件,把60行處的<varargs.h>改成<stdarg.h>

4> 修改obstack.h文件,在341行處,把*((void **)__o->next_free)++ 改成 *((void **)__o->next_free++)

5> 運行下面的命令(注意如今仍是處於$IDIR/gcc-2.7.2.3目錄下)

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/

而後開始編譯:

make LANGUAGES="c c++" CFLAGS="-O" CC="gcc"

此時會出現一個錯誤,錯誤的地方是insn-output.c文件,編輯這個文件,在第675 、750、823行末加上一個反斜槓」\"。(注:若是你make clean 後,而後有從新make,須要再次修改這個文件,由於這個文件是編譯過程當中產生的)

注:若是你在剛開始時安裝了gcc-multilib和g++-multilib,若此時你的gcc變爲5.0版本了那麼此時編譯會出現一個「recipe for target '../cc1plus' failed」這樣的錯誤,在我make clean之後,而後gcc版本換成4.9後就沒有這個錯誤了,因此這個錯誤多是gcc版本引發的。

而後再次make:

make LANGUAGES="c c++" CFLAGS="-O" CC="gcc"

此時會在出現一個錯誤,相似有下面的信息:

"*** buffer overflow detected ***: /home/tangkk/simplescalar/sslittle-na-sstrix/bin/ar terminated"

修復這個錯誤就用到了,安裝包裏的install needed文件中的兩個文件了,把這兩個文件(ar和ranlib)放到$IDIR/sslittle-na-sstrix/bin目錄下。而後修改它們的權限,使其變爲可執行文件,使用下面指令:

cd $IDIR/sslittle-na-sstrix/bin/

chmod +x ar ranlib

而後回到gcc.2.7.2.3目錄,再一次編譯:

make LANGUAGES="c c++" CFLAGS="-O" CC="gcc"

 

而後若是出現「recipe for target 'libgcc1.null' failed」這樣的錯誤,此時再裝gcc-multilib而後在從新編譯就不會有這個錯誤了。

而後在執行編譯命令:

 

此時若出現文件關於cxxmain.c的錯誤,能夠經過修改cxxmain.c文件,把裏面第2978和2979行註釋掉,而後在從新編譯。

到這時應該就沒有錯誤了。

七、Make enquire

一樣在$IDIR/simplescalar/gcc-2.7.2.3目錄下,執行下面的指令:

make enquire

若出現「undefined reference to `__isoc99_sscanf」這樣的錯誤,須要修改Makefile文件,在第995行「$(ENQUIRE_CFLAGS)"後面加上」-D_GNU_SOURCE「,而後在從新編譯。

執行make enquire

若是出現」/bin/sh: 1: cc: not found「這樣的錯誤,那就須要修改Makefile,在第60行,修改 CC=cc 爲 CC=gcc,而後在執行make enquire。

而後就編譯完了。

 

而後執行下面的命令來安裝交叉編譯器:

 

../simplesim-3.0/sim-safe ./enquire -f > float.h-cross  (這個過程好像須要花費很長的時間,個人已經運行一個下午了,尚未結束)
 
make LANGUAGES="c c++" CFLAGS="-O" CC="gcc" install

 

八、測試

能夠寫一個hello world程序來進行測試。

寫一個hello.c的文件內容以下:

#include<stdio.h>

main(){

  printf("Hello World!\n");

}

而後使用交叉編譯器來編譯它。命令以下:

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

(若是這樣運行失敗了,能夠試着進入上面的bin文件夾,假設hello.c文件在$IDIR目錄下,使用命令"./sslittle-na-sstrix-gcc -o ../hello ../hello.c"來運行,若是仍是失敗,多是環境變量混亂的問題,關閉並重啓終端,而後再試)

若是看到了下面的信息:

sim: ** starting functional simulation **
Hello World!
說明已經安裝成功了!
相關文章
相關標籤/搜索