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-。