环境准备:宿主机要求与源码获取

做嵌入式开发,环境准备是第一步。这一步要是没弄好,后面编译报错能让你怀疑人生。我见过太多同事在环境上浪费一整天,结果只是少装了个包。咱们今天就把这事一次性搞定。

宿主机选型:Ubuntu 还是 Debian?

说实话,Buildroot 对宿主机的要求不算苛刻。但为了少踩坑,我个人建议用 Ubuntu 22.04 LTS 或 Debian 12。这两个发行版的软件源比较全,依赖包版本也够新。

为什么推荐 LTS 版本?因为 Buildroot 的迁移适配工作往往持续几个月,你总不希望做到一半系统要升级大版本吧?我在项目中就吃过这个亏——用 Ubuntu 21.10 做了一半,结果系统 EOL 了,被迫迁移环境,折腾了两天。

发行版 推荐版本 理由
Ubuntu 22.04 LTS / 24.04 LTS 社区活跃,文档多,遇到问题好搜
Debian 12 (Bookworm) 稳定,包管理成熟,适合生产环境
其他 Fedora / Arch 能用,但需要自己解决依赖问题
注意:不建议用 WSL1 做 Buildroot 编译。WSL2 勉强可以,但文件系统性能有瓶颈。我试过在 WSL2 上编译一个完整系统,比原生 Linux 慢了将近 40%。有条件还是上原生 Linux 或者虚拟机。

安装必要依赖包

Buildroot 的依赖说多不多,说少不少。少了哪个,编译到一半就报错,很烦人。我整理了一份清单,你直接复制粘贴就行。

先更新软件源:

sudo apt update
sudo apt upgrade -y

然后安装核心依赖:

sudo apt install -y \
    build-essential \
    git \
    wget \
    cpio \
    unzip \
    rsync \
    bc \
    file \
    python3 \
    python3-pip \
    python3-venv \
    libncurses5-dev \
    libssl-dev \
    flex \
    bison \
    gettext \
    texinfo \
    patch \
    diffutils \
    perl \
    sed \
    gawk \
    pkg-config \
    libtool \
    autoconf \
    automake \
    make \
    cmake \
    ninja-build \
    meson
小技巧:如果你用的是 Debian 12,记得把 python3-venv 也装上。我上次在 Debian 上编译 Buildroot 2024.02 时,就因为缺这个包导致 Python 脚本跑不起来,排查了半天。

有些包是可选的,但建议装上:

  • graphviz:生成依赖关系图,调试时很有用
  • asciidoc:生成文档用,如果你需要输出 PDF 手册
  • qt5-qmake:如果你要编译 Qt 相关的包
sudo apt install -y graphviz asciidoc qt5-qmake

配置 Git 与 Repo

Buildroot 本身用 Git 管理。但如果你要管理多个 BSP 仓库,Repo 工具能帮你省不少事。

Git 基础配置

先配好你的身份信息:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

我个人习惯再加几个配置:

git config --global core.editor vim
git config --global pull.rebase true
git config --global init.defaultBranch main

为什么设 pull.rebase true?因为 Buildroot 的提交历史很干净,用 rebase 方式拉取能保持线性历史,方便后续做版本回溯。我在做迁移适配时,经常需要 git bisect 定位问题,线性历史会省很多事。

安装 Repo 工具

Repo 是 Google 开发的仓库管理工具,Android 和 Buildroot 社区都在用。安装很简单:

mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo

然后把 ~/.local/bin 加到 PATH 里:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
注意:Repo 需要 Python 3.6 以上版本。如果你用的是 Ubuntu 20.04,默认 Python 3.8 没问题。但如果你还在用 Ubuntu 18.04,建议先升级 Python。

获取 Buildroot 源码

源码获取有两种方式:Git 克隆和下载压缩包。我推荐用 Git,因为方便切换版本和查看历史。

方式一:Git 克隆(推荐)

git clone https://git.buildroot.net/buildroot
cd buildroot

克隆完成后,你可以查看所有可用版本:

git tag -l | grep -E '^20[0-9]{2}\.[0-9]{2}'

切换到特定版本:

git checkout 2024.02.1

我个人习惯用 LTS 版本做迁移适配。比如 2024.02.x 是 LTS 分支,会持续维护两年。非 LTS 版本可能只维护几个月,不适合做长期项目。

方式二:下载压缩包

如果你只是临时用一下,或者网络环境不好,可以直接下载:

wget https://buildroot.org/downloads/buildroot-2024.02.1.tar.gz
tar -xzf buildroot-2024.02.1.tar.gz
cd buildroot-2024.02.1

验证环境是否就绪

环境配好了,跑个简单的测试验证一下:

make defconfig
make -j$(nproc)

如果一切正常,Buildroot 会开始下载源码并编译。第一次编译会比较慢,因为要下载工具链和基础包。嗯,这里要注意——确保你的网络能访问外网,Buildroot 的包都是从上游源码仓库下载的。

避坑指南:我曾经在公司的内网环境做 Buildroot 编译,结果发现很多源码包下载不了。后来配了代理才解决。如果你也在内网环境,记得提前配好 http_proxy 和 https_proxy 环境变量。

本章知识体系

下面这张图帮你梳理了环境准备的完整流程:

环境准备知识体系 宿主机选择 Ubuntu 22.04 / Debian 12 依赖包安装 build-essential + 工具链 Git & Repo 配置 身份信息 + 工具安装 获取 Buildroot 源码 Git 克隆 / 压缩包下载 环境验证 make defconfig && make -j$(nproc) 关键提醒 • 优先使用 LTS 版本,避免系统升级中断工作 • 内网环境提前配置代理,否则源码包下载失败 • 第一次编译较慢,建议预留 30-60 分钟

环境准备这块,说白了就是一次配置,长期受益。把这一步做扎实了,后面编译、调试、迁移都会顺畅很多。我每次接手新项目,第一件事就是按这个流程把环境搭好,然后做个快照——万一搞坏了,恢复起来也快。