为MIPS构建mips-elf-gcc4.4.1交叉编译器

由于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

你可能感兴趣的:(java,gcc,Path,fortran,编译器,gtk)