Ubuntu 20.04下,手把手教你搞定U-Boot源码下载与编译(含常见错误解决)

张开发
2026/4/18 22:02:22 15 分钟阅读

分享文章

Ubuntu 20.04下,手把手教你搞定U-Boot源码下载与编译(含常见错误解决)
Ubuntu 20.04下U-Boot源码下载与编译实战指南1. 准备工作与环境搭建在开始U-Boot的源码下载与编译之前我们需要确保开发环境已经准备就绪。Ubuntu 20.04作为长期支持版本为嵌入式开发提供了稳定的基础。以下是搭建环境的详细步骤首先更新系统软件包以确保所有组件都是最新版本sudo apt update sudo apt upgrade -y接下来安装编译U-Boot所需的基础工具链和依赖项sudo apt install -y build-essential git bison flex libssl-dev swig python3-dev对于ARM64平台的交叉编译需要安装特定的工具链sudo apt install -y gcc-aarch64-linux-gnu验证工具链是否安装成功aarch64-linux-gnu-gcc --version如果看到类似以下的输出说明工具链已正确安装aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc.2. 获取U-Boot源码U-Boot作为开源项目其源码托管在多个平台上。以下是获取源码的几种方式2.1 官方Git仓库克隆推荐从官方仓库克隆源码确保获取最新且完整的代码git clone https://source.denx.de/u-boot/u-boot.git cd u-boot2.2 GitHub镜像仓库如果官方仓库访问不畅可以使用GitHub上的镜像git clone https://github.com/u-boot/u-boot.git cd u-boot2.3 版本选择策略U-Boot采用v年.月的版本命名方式。对于生产环境建议选择稳定的发布版本而非开发分支。例如要切换到2023.04版本git checkout v2023.04版本选择建议避免使用刚发布的新版本可能存在未发现的bug优先选择至少有一个补丁发布的版本如v2023.04.01参考社区反馈选择稳定版本3. 配置与编译U-Boot3.1 环境变量配置在编译前需要设置必要的环境变量export ARCHarm64 export CROSS_COMPILEaarch64-linux-gnu-可以将这些设置添加到~/.bashrc中避免每次重新设置echo export ARCHarm64 ~/.bashrc echo export CROSS_COMPILEaarch64-linux-gnu- ~/.bashrc source ~/.bashrc3.2 选择目标板配置U-Boot支持众多开发板配置模板位于configs/目录。例如对于树莓派4make rpi_4_defconfig常见开发板的配置文件名树莓派4rpi_4_defconfigRK3568rockchip_rk3568_defconfigQEMU ARM64qemu_arm64_defconfig3.3 自定义配置可选如果需要调整默认配置可以使用菜单界面make menuconfig在菜单界面中可以启用/禁用特定功能修改内存布局调整启动参数3.4 开始编译使用多核编译加速过程根据CPU核心数调整-j参数make -j$(nproc)编译成功后会在目录下生成以下关键文件u-bootELF格式的可执行文件u-boot.bin二进制镜像文件u-boot.img可用于烧写的镜像文件4. 常见问题与解决方案4.1 SWIG缺失错误错误信息unable to execute swig: No such file or directory解决方案sudo apt install -y swig4.2 Python开发环境问题错误信息fatal error: Python.h: No such file or directory解决方案sudo apt install -y python3-dev4.3 特定版本问题U-Boot 2022.04初版存在已知问题建议使用2022.04.01或更高的小版本或回退到2021.10等稳定版本4.4 工具链版本不兼容如果遇到奇怪的编译错误可能是工具链版本问题确保使用Ubuntu官方源中的工具链避免混合使用不同来源的工具链可尝试完全卸载后重新安装sudo apt remove --purge gcc-aarch64-linux-gnu sudo apt install gcc-aarch64-linux-gnu5. 高级技巧与优化建议5.1 并行编译加速合理使用-j参数可以显著缩短编译时间-j$(nproc)使用所有CPU核心-j4限制为4个并行任务适用于4核CPU5.2 清理构建环境在切换配置或版本时建议先清理make distclean日常开发中可以使用更轻量的清理make clean5.3 调试符号与优化级别如果需要调试可以修改Makefile中的优化选项将-O2改为-O0 -g保留调试信息但会显著增加二进制文件大小5.4 使用ccache加速重复编译安装ccache并配置环境变量sudo apt install -y ccache export CCACHE_DIR$HOME/.ccache export PATH/usr/lib/ccache:$PATH6. 验证与部署6.1 基本功能验证对于QEMU支持的平台可以直接模拟运行qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -bios u-boot.bin6.2 实际硬件测试将生成的u-boot.bin或u-boot.img写入开发板的启动设备使用dd命令写入SD卡或通过厂商提供的烧写工具6.3 功能测试清单成功启动后应验证串口输出是否正常环境变量是否正确加载网络功能是否正常存储设备是否能正确识别7. 持续维护与更新7.1 获取最新变更定期从上游仓库拉取更新git fetch origin git pull7.2 处理合并冲突更新后如果出现冲突备份本地修改使用git mergetool解决冲突重新测试所有功能7.3 提交问题与贡献发现问题时先在邮件列表和issue中搜索是否已有报告准备重现步骤和环境信息按照社区规范提交问题报告或补丁

更多文章