Ubuntu 14.10安裝simplescalar


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

一、安裝參考文章

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

二、安裝環境信息

安裝的電腦系統是ubuntu14.10 64位操作系統,如下圖:

三、安裝過程

1、下載安裝文件,可以到此下載: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時用到。

2、設置環境變量

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

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版本太高了,具體的錯誤在后面會提到。

 

3、解壓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文件夾。

4、安裝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文件夾)

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

...

6、安裝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行注釋掉,然后在重新編譯。

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

7、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

 

8、測試

可以寫一個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!
說明已經安裝成功了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM