默认的u-boot编译时使用的soft float api,而arm-linux-eabihf-默认使用的float默认是hard,使用arm-linux-gnueabihf-gcc -v可以找到选项--with-float=hard,而查看arch/arm/cpu/armv7/config.mk中有语句如下:
PLATFORM_RELFLAGS += -fno-common --ffixed-r8 -msoft-float
修改其为
PLATFORM_RELFLAGS += -fno-common --ffixed-r8 -mfloat-abi=hard
保存退出
再次编译
清除所有配置文件
1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
使用arndale_octa_config
2. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- arndale_octa_config
编译
3. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
4.生成u-boot。
此时不会再报错。
arm-linux-gnueabihf-ld: error: /usr/lib/gcc/arm-linux-gnueabihf/4.6/libgcc.a(_udivdi3.o) uses VFP register arguments, u-boot does not