為MIPS構建mips-elf-gcc4.4.1交叉編譯器

來源:互聯網
上載者:User

由於eCos需要mips-elf-gcc來編譯核心,所以,今天編譯了gcc4.4.1最新版本的gcc編譯器,步驟如下:

 

首先,在編譯之前必須先匯出以下變數:

export TARGET=mips-elf

export PREFIX=/usr/local/$TARGET

export PATH=$PATH:$PREFIX/bin

echo $TARGET

echo $PREFIX

echo $PATH

===================

編譯環境:FC9

GCC版本如下:

使用內建 specs。

目標:i386-redhat-linux

配置為:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-cpu=generic --build=i386-redhat-linux

執行緒模式:posix

gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC) 

======================

安裝binutils-2.19.1,

#tar xjfv binutils-2.19.1.tar.bz2

#mkdir build-binutils

#cd build-binutils

#../binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX

#make all

#make install

================================

安裝libgmp:

說明:

該庫用於進行高精度的運算。

如果你的系統上的gmp庫4.1以上,就不用安裝了。

 

用於計算的庫:

gmp-4.3.1,

#mkdir build-gmp

#cd build-gmp

#../gmp-4.3.1/configure --prefix=/usr --enable-shared

===========================================

安裝libmpfr,

說明:

該庫用於進行高精度的運算。

如果你的系統的mpfr庫是2.3.2以上,就不用安裝了。

 

 

#mkdir build-mpfr

#cd build-mpfr

#../mpfr-2.4.1/configure --prefix=/usr --enable-shared --disable-static

===========================================

安裝gcc:

#tar jxvf gcc-4.4.1.tar.bz2

#mkdir build-gcc

#cd build-gcc

#../gcc-4.4.1/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib  --with-gnu-as --with-gnu-ld

#make all-gcc(注意,這裡是make all-gcc)

#make install-gcc(注意,這裡是make install-gcc)

 

說明:

如果使用make install命令安裝可能會提示以下錯誤(用make install-gcc就不會了):

make[2]: Entering directory `/home/gcc-4.4.1/build-gcc/mips-elf/libstdc++-v3'

make[2]: *** 沒有規則可以建立目標“install”。 停止。

make[2]: Leaving directory `/home/gcc-4.4.1/build-gcc/mips-elf/libstdc++-v3'

make[1]: *** [install-target-libstdc++-v3] 錯誤 2

make[1]: Leaving directory `/home/gcc-4.4.1/build-gcc'

make: *** [install] 錯誤 2

 

則暫時不要理會之。

======================================

編譯newlib-1.17.0,

#tar jxvf newlib-1.17.0.tar.bz2

#mkdir build-newlib

#cd build-newlib

#../newlib-1.17.0/configure --target=$TARGET --prefix=$PREFIX

#make all

#make install

=======================================

重新編譯gcc,

gcc-4.4.1

 

#cd build-gcc

#../gcc-4.4.1/configure --target=$TARGET --prefix=$PREFIX --with-newlib --with-gnu-as --with-gnu-ld --disable-shared --disable-libssp

#make all(和前面一次的編譯不同,這裡是make all)

#make install

 

這次由於有了剛才編譯的newlib的支援,就不會再有錯誤了。

===================================

安裝gdb-6.8

#tar zxvf gdb-6.8.tar.gz

#mkdir build-gdb

#cd build-gdb

#../gdb-6.8/configure --target=$TARGET --prefix=$PREFIX --enable-sim-stdio

#make all

#make install

 

完成!

*********************************************

mips-elf-gcc是用來開發mips硬體程式的,它不能使用動態庫,另外有一個有趣的工具叫作:mips-elf-run

它是PC下的一個MIPS的simulator(模擬器),可以類比運行mips elf程式。

 

測試如下:

mips-elf-gcc -Tidt.ld -mips4 -EL hello.c -o hello

mips-elf-run hello

就可以看到列印資訊了。

 

其中編譯選項-T是給程式指定一個預設的入口,否則會警告。

-EL是為了產生LSB程式,即小端模式。

 

 

 

 

 

 

關鍵字:交叉編譯器,mips-elf-gcc

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.