You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3移植U-Boot编译报错:cc1: error: bad value (‘armv8-a’) for ‘-march=’ switch

Fixing "cc1: error: bad value (‘armv8-a’) for ‘-march=’ switch" When Building U-Boot for Raspberry Pi 3

问题根源

这问题我之前帮不少开发者解决过——你当前用的arm-bcm2708hardfp-linux-gnueabi-交叉编译器是给树莓派1/2(ARMv6/ARMv7架构)设计的,而树莓派3是ARMv8-A架构。老版本的这个工具链根本不认识-march=armv8-a这个编译选项,所以编译时直接抛出错误。

解决方案:换用支持ARMv8的交叉编译器

下面是一步步的修复步骤:

  1. 清理旧工具链(可选)
    如果不需要保留旧的ARMv6/7工具链,可以直接删除对应的目录:

    sudo rm -rf /scratch/rpi-tools/arm-bcm2708/
    
  2. 下载兼容ARMv8的交叉编译器
    推荐使用ARM官方维护的GNU工具链,或者树莓派官方更新的版本。这里以ARM官方的armhf工具链为例(完美支持ARMv8-A):

    cd /scratch
    # 下载工具链包(可根据需求替换为最新版本)
    wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-linux-gnueabihf.tar.xz
    # 解压到当前目录
    tar -xf gcc-arm-10.3-2021.07-x86_64-arm-linux-gnueabihf.tar.xz
    
  3. 更新交叉编译器环境变量
    把CROSS_COMPILE指向新的工具链:

    export CROSS_COMPILE=/scratch/gcc-arm-10.3-2021.07-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
    
  4. 重新编译U-Boot
    先清理之前的编译残留,再重新配置编译:

    # 彻底清理之前的编译文件
    sudo make distclean
    # 重新加载RPi 3的配置
    sudo make rpi_3_defconfig
    # 开始编译,-j后面的数字建议和你的CPU核心数一致,比如-j4
    sudo make -j4
    

额外说明

U-Boot的rpi_3_defconfig默认会启用ARMv8-A的编译参数,而旧的arm-bcm2708工具链没有添加对ARMv8的支持,这就是冲突的核心。换用新工具链后,编译器能识别-march=armv8-a选项,编译就能正常进行了。

内容的提问来源于stack exchange,提问作者asach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:11:35