编译u-boot:_udivsi3.S:67: relocation truncated to fit: R_ARM_PLT32 __div0

 
今天准备把阳初2410板子的bootloader换成u-boot,所以下了u-boot-1.2.0的源码包进行修改,用3.4.1的交叉编译器.修改完编译之后出现:lib_arm/libarm.a(_udivsi3.o)(.text+0x8c):/home/qsg/u-boot-1.2.0/lib_arm/_udivsi3.S:67: relocation truncated to fit: R_ARM_PLT32 __div0
    lib_arm/libarm.a(_umodsi3.o)(.text+0xa8):/home/qsg/u-boot-1.2.0/lib_arm/_umodsi3.S:79: relocation truncated to fit: R_ARM_PLT32 __div0
    make: *** [u-boot] Error 1
这个问题,经过网上查询发现是一个"软硬浮点"的问题,可疑自给从新建立一个支持
softfloat的交叉编译工具,所以现在把自己的经过写出来,希望对大家有帮助.
1、到网站http://kegel.com/crosstool/crosstool-0.43.tar.gz下载制作脚本
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用户登录AS4,然后新建目录:/opt/crosstool,然后将其所有者修改为您的普通用户(我的AS4的普通用户是coolber,以下均以coolber为例说明)
4、修改方法:chown coolber /opt/crosstool,或者在图形界面中右击crosstool目录的图标,然后选择“属性”,在属性菜单中选择“权限”,把所有者修改为coolber用户即可。
5、在目录/home/coolber目录下面新建目录downloads,然后复制刚才下载的几个源码包到目录downloads下面,同时也复制crosstool-0.28.tar.gz到downloads目录下。
6、然后切换linux的用户,在终端中输入:su coolber,然后此时终端的用户就变成了coolber了。
7、然后进入到目录/opt/crosstool下面:cd /opt/crosstool,解压之前下载的crosstool-0.28.tar.gz文件:tar xvfz /home/coolber/downloads/crosstool-0.28.tar.gz -C /opt/crosstool。
8、解压完毕后,进入crosstool-0.28目录:cd crosstool-0.28。
9、然后执行:sh demo-arm-softfloat.sh就可以开始制作编译器了。
10、漫长的等待之后,然后会在默认的/opt/crosstool/目录下面产生一个名为arm-softfloat-linux-gnu的目录,它下面就是刚刚编译成功的交叉编译器了。
然后修改PATH:在命令行下执行
export PATH=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/:$PATH
然后进入u-boot-1.2.0目录,修改Makefile文件,将使用的交叉编译器从arm-linux-改为arm-softfloat-linux-gnu-
最后从新编译u-boot 结果成功!!!!

原文链接: http://hi.baidu.com/lb121/blog/item/a4012bdf7a3c671648540359.html

你可能感兴趣的:(脚本,Path,div,makefile,终端,编译器)