1. 环境搭建与源码获取
任务目标
搭建U-Boot交叉编译环境,获取U-Boot v2024.01源码,并验证arm-linux-gnueabihf工具链可正常编译U-Boot。
环境需求
- Ubuntu 20.04/22.04 x86_64主机
- 必要依赖包:
git,build-essential,bison,flex,libssl-dev,libncurses-dev,swig,python3-dev,python3-setuptools - 交叉编译工具链:
gcc-arm-linux-gnueabihf(用于32位ARM目标板)
环境安装与源码获取
安装依赖包与交叉编译工具链:
sudo apt update
sudo apt install -y git build-essential bison flex libssl-dev libncurses-dev swig python3-dev python3-setuptools gcc-arm-linux-gnueabihf
获取U-Boot v2024.01源码并进入目录:
git clone https://github.com/u-boot/u-boot.git
cd u-boot
git checkout v2024.01
工具链验证
确认交叉编译器版本与架构:
arm-linux-gnueabihf-gcc --version
预期输出第一行包含版本号(如9.4.0)且目标架构为arm-linux-gnueabihf。
最小编译验证
以QEMU虚拟ARM板qemu_arm_defconfig为验证目标,执行最小配置编译:
make qemu_arm_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)
编译完成后,确认关键产物存在:
ls -l u-boot
预期输出显示u-boot可执行文件(ELF格式,约数百KB),说明工具链可用且U-Boot源码完整。
验证判定标准
arm-linux-gnueabihf-gcc --version能正常输出版本信息,无command not found错误。make qemu_arm_defconfig无报错退出,生成.config文件。make编译过程无致命错误,最终生成u-boot二进制文件。- 若编译过程中出现
swig、python3相关错误,说明依赖未完整安装,需重新执行依赖安装命令。
常见问题
- 编译报错
fatal error: libfdt.h: No such file or directory:缺少libfdt-dev,执行sudo apt install -y libfdt-dev后重新编译。 - 编译报错
/bin/sh: 1: python3: not found:未安装python3,执行sudo apt install -y python3。 - 工具链不匹配:若目标板为64位ARM(如Cortex-A53),应使用
gcc-aarch64-linux-gnu并将CROSS_COMPILE改为aarch64-linux-gnu-。