第1章:环境准备——把工具箱收拾利索

做嵌入式开发,说白了就是跟硬件和底层软件打交道。我见过太多新手一上来就急着敲代码,结果卡在环境配置上半天动弹不得。嗯,咱们先把工具箱收拾利索,后面才能干得顺手。

1.1 安装依赖包(Ubuntu/Debian)

Buildroot 是个好工具,但它对宿主机的依赖不少。我第一次用 Buildroot 时,直接 make 报了一堆错,才发现缺了十几个包。后来我学乖了,先把依赖装齐。

在 Ubuntu 或 Debian 系统上,执行下面这条命令就行:

sudo apt update
sudo apt install -y \
    build-essential \
    git \
    libncurses5-dev \
    flex \
    bison \
    libssl-dev \
    bc \
    unzip \
    wget \
    file \
    cpio \
    rsync \
    python3 \
    python3-pip \
    python3-venv \
    cmake \
    ninja-build \
    pkg-config \
    libtool \
    autoconf \
    automake \
    texinfo \
    help2man \
    gawk \
    libelf-dev \
    libglib2.0-dev \
    libgdk-pixbuf2.0-dev \
    libgtk-3-dev \
    liblz4-tool \
    zstd
我的小建议: 如果你用的是 WSL2 或者 Docker 环境,记得先确认系统源没问题。我曾经在 WSL2 上忘了 apt update,结果装了一堆旧版本,编译时踩了坑。

这些包里,libncurses5-dev 是给 menuconfig 用的,flexbison 是词法语法分析器,libssl-dev 是 HTTPS 下载用的。缺了哪个,编译时都会报错。

1.2 配置 Git 与 Repo

Buildroot 源码托管在 Git 上,所以 Git 是必须的。我个人习惯先配好 Git 的用户名和邮箱:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

Repo 是 Google 出的多仓库管理工具,Buildroot 本身不需要它,但如果你要管理多个 BSP 或内核仓库,Repo 能省不少事。安装 Repo 很简单:

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin
注意: 国内访问 Google 的 repo 源可能不稳定。我曾经遇到过下载超时的情况,后来改用清华镜像源才搞定。你可以在 ~/.bashrc 里加一行:
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

1.3 下载 Buildroot 源码

Buildroot 的官方仓库在 git://git.buildroot.net/buildroot。我个人建议用 Git 克隆,而不是下载压缩包。为什么呢?因为 Git 克隆能让你随时切换版本、查看历史、打补丁。

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

如果你网速慢,可以用国内镜像:

git clone https://gitlab.com/buildroot.org/buildroot.git

克隆完成后,你可以看看有哪些稳定版本:

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

我个人习惯用最新的 LTS 版本,比如 2024.02.x 系列。切换到指定版本:

git checkout 2024.02.1
避坑指南: 我曾经直接用了 master 分支,结果编译到一半发现某个包有 bug,折腾了两天才定位到。后来我学乖了,做产品开发一定用稳定版。

1.4 初次体验 make menuconfig

好,现在源码有了,依赖也装齐了。我们来体验一下 Buildroot 的配置界面。

make menuconfig

如果一切正常,你会看到一个蓝底白字的菜单界面。这就是 Buildroot 的核心配置工具,基于 ncurses 库。

第一次打开时,你可能会有点懵——选项太多了。别急,我们先看看几个关键区域:

  • Target options:目标架构,比如 ARM、x86、RISC-V
  • Build options:编译选项,比如是否用 ccache、并行编译数
  • Toolchain:工具链配置,可以用内置的,也可以用外部的
  • System configuration:系统配置,比如主机名、root 密码
  • Kernel:内核版本和配置
  • Target packages:你要装哪些软件包

操作方式很简单:

  • 上下箭头:移动光标
  • 回车:进入子菜单
  • 空格或 Y:选中/取消
  • ESC ESC:返回上级菜单
  • 左右箭头:选择底部的按钮(Save、Load、Exit)
我的经验: 第一次配置时,别贪多。先选一个简单的目标板,比如 QEMU 模拟的 ARM 板,只勾最少的包。等编译通过了,再慢慢加功能。这样出了问题也好排查。

配置完成后,按 Exit 退出,系统会问你是否保存。选 Yes,配置会写入 .config 文件。

你可以用 cat .config | head -20 看看里面长什么样。说白了,这就是一个键值对文件,Buildroot 根据它来决定编译什么、怎么编译。

知识体系一览

下面这张图帮你理清本章的核心逻辑:

第1章:环境准备知识体系 安装依赖包 apt install 必备工具 配置 Git & Repo 版本管理工具 下载 Buildroot Git clone 源码 make menuconfig 初次配置体验 生成 .config 文件 后续编译的依据 关键点 先装依赖 → 再配工具 → 最后配置 常见问题 • 依赖缺失 → 编译报错,回头补装即可 • Git 未配置 → 无法提交或切换分支 • menuconfig 打不开 → 检查 libncurses5-dev 是否安装

这张图把本章的四个步骤串起来了。说白了,环境准备就是一条流水线:先装好系统工具,再配好版本管理,然后拉下源码,最后用 menuconfig 生成配置文件。每一步都是下一步的前提,缺一不可。


专注资料整理