如何制作支持softfloat的ARM交叉编译器
S3C2440芯片没有硬件浮点数(hardfloat),很多软件只能采用软件浮点数(softfloat)的编译器编译,恰巧现在高版本的u-boot只能采用支持softfloat的交叉编译器编译,否则会在编译结束前的链接那一步出现不支持softfloat的错误。要解决这个错误的唯一办法就是采用支持softfloat的交叉编译器编译uboot。
下面就介绍如何制作支持softfloat的交叉编译器,文章结束的地方有已经制作好的交叉编译器,供大家下载。
基础篇:
1、到网站http://kegel.com/crosstool/crosstool-0.43.tar.gz下载制作脚本,其中crosstool-0.43是最新的版本,想要使用其他版本请直接修改43两个数字即可。
2、然后下载制作交叉编译器所需要的源码包,下面就是各个源码包的下载站点:
ftp://ftp.gnu.org/pub/gnu/gcc/gcc-3.4.1/gcc-3.4.1.tar.bz2,
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-linuxthreads-2.3.3.tar.gz,
ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.3.tar.gz,
ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.15.tar.gz,
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.8.tar.gz,
3、下载完毕源码包之后,使用root用户登录redhat9,然后新建目录:/opt/crosstool,然后将其所有者修改为您的普通用户(我的redhat9的普通用户是yellow,以下均以yellow为例说明)
4、修改方法:chown yellow /opt/crosstool,或者在图形界面中右击crosstool目录的图标,然后选择“属性”,在属性菜单中选择“权限”,把所有者修改为yellow用户即可。
5、在目录/home/yellow目录下面新建目录downloads,然后复制刚才下载的几个源码包到目录downloads下面,同时也复制crosstool-0.28.tar.gz到downloads目录下。
6、然后切换linux的用户,在终端中输入:su yellow,然后此时终端的用户就变成了yellow了。
7、然后进入到目录/opt/crosstool下面:cd /opt/crosstool,解压之前下载的crosstool-0.28.tar.gz文件:tar xvfz /home/yellow/downloads/crosstool-0.28.tar.gz -C /opt/crosstool。
8、解压完毕后,进入crosstool-0.28目录:cd crosstool-0.28。
9、然后执行:./demo-arm-softfloat.sh就可以开始制作编译器了。
10、可能需要1到2个小时时间,然后会在默认的/opt/crosstool/目录下面产生一个名为arm-softfloat-linux-gnu的目录,它下面就是刚刚编译成功的交叉编译器了。