OpenEdv-开源电子网

标题: 解决新版GCC编译u-boot报错问题 [打印本页]

作者: stm32新人一枚    时间: 2025-5-17 14:45
标题: 解决新版GCC编译u-boot报错问题

最近开始学习i.mx6ull开发,在ubuntu中安装了最新版的交叉编译工具,arm-linux-gnueabihf-gcc的版本是13.3.0。


在编译正点原子提供的u-boot源码时,一直提示“arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5”,导致编译不通过。


经过各种询问deepseek,外加运气成分,将u-boot源文件/arch/arm/Makefile文件中第19行
    “arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, -march=armv5)”
修改为
    “arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a)”
就可以编译成功了。




询问deepseek后,deepseek的解释是,原本这行指令的作用是:

尝试用 -march=armv7-a 编译,如果失败则回退到 -march=armv5。

新版 GCC 移除了对 -march=armv5 的支持,导致回退时直接报错(即使 -march=armv7-a 本可正常工作)。

i.MX6ULL 是 Cortex-A7,属于 ARMv7 架构,因此 -march=armv7-a 或 -march=armv7ve 才是正确的选项。



在此基础上,我把原本的

“arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, -march=armv5)”,


改成了

“arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, -march=armv7ve)”,



测试之后,能正常编译。


后续再测试使用新编译器编译出的u-boot.imx下载到开发板后会不会有问题。













欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4