3、Buildroot环境搭建:下载源码、安装依赖、配置编译环境

好,咱们进入正题。这一章要解决的是「怎么让Buildroot跑起来」的问题。

说白了,就是三件事:拿到源码、装好依赖、配好环境。这三步走完,你就能敲下第一行 make 命令了。

3.1 下载Buildroot源码

我个人习惯把源码放在 /opt 或者 ~/workspace 下面。你随意,但路径里别带中文和空格,不然编译时容易出些莫名其妙的错。

下载方式有两种,我分别说一下:

方式一:从官网下载稳定版(推荐)

wget https://buildroot.org/downloads/buildroot-2023.02.tar.gz
tar -xvf buildroot-2023.02.tar.gz
cd buildroot-2023.02/

嗯,这里要注意:版本号别选太新。我遇到过几次,刚发布的版本有些包还没适配好,编译到一半报错,查半天发现是上游依赖的问题。2023.02 这个 LTS 版本我用着挺稳。

方式二:从Git仓库克隆(适合想尝鲜的)

git clone https://git.buildroot.net/buildroot
cd buildroot
git checkout 2023.02.x

为什么我建议切到稳定分支?因为 master 分支天天在变,你今天配好的环境,下周可能就编译不过了。做产品开发,稳定第一。

3.2 安装依赖包

这一步是很多人翻车的地方。你想想看,Buildroot 本质上是个「自动化编译工厂」,它要调用 gcc、make、flex、bison 等等一堆工具。缺一个,编译就卡住。

我在 Ubuntu 20.04/22.04 上常用的安装命令:

sudo apt update
sudo apt install -y \
    build-essential \
    libncurses-dev \
    flex bison \
    bc \
    cpio \
    rsync \
    unzip \
    file \
    wget \
    git \
    python3 \
    python3-distutils
小提示:如果你用的是 CentOS 或 Fedora,把 apt install 换成 yum installdnf install,包名基本一样。但 libncurses-dev 在 Red Hat 系里叫 ncurses-devel

装完之后,验证一下关键工具:

gcc --version
make --version
flex --version
bison --version

如果哪个命令报「command not found」,那就是没装上,回头再装一遍。

避坑指南:我曾经在 Ubuntu 18.04 上漏装了 python3-distutils,结果编译到内核配置那一步直接报错,提示找不到 distutils 模块。查了半小时才发现是 Python 包没装全。所以,别偷懒,一条一条对着装

3.3 配置编译环境

环境配置其实就两件事:选目标平台选组件

Buildroot 提供了一个图形化配置界面,跟 Linux 内核的 menuconfig 长得一模一样。运行:

make menuconfig

你会看到一个蓝底黄字的界面。这里我带你走一遍关键配置项:

配置项 说明 我的建议
Target Architecture 目标CPU架构 ARM、ARM64、x86_64 选一个
Target Architecture Variant CPU具体型号 比如 cortex-a7、cortex-a53
Target Binary Format 可执行文件格式 ARM 选 ELF,ARM64 选 ELF64
Target Options 浮点运算、对齐方式等 默认即可,除非你特别清楚
Toolchain type 工具链来源 选 Buildroot 内置的,省心
System configuration 根文件系统配置 设置主机名、密码、启动方式

我个人习惯先选好架构,其他保持默认,先编译一次看看能不能跑通。能跑通再慢慢加功能。这叫「最小系统先行」。

3.4 知识体系总览

下面这张图,是我画的环境搭建流程。你看一眼,心里就有谱了:

Buildroot 环境搭建流程 下载源码 wget / git clone 安装依赖包 apt install ... 配置环境 make menuconfig 配置核心要素 目标架构 ARM / x86 / RISC-V 工具链 内置 / 外部 系统配置 主机名 / 密码 配置完成后,保存退出,即可执行 make 开始编译

3.5 验证环境是否就绪

配置完 menuconfig 之后,先别急着 make。我教你一个快速验证的方法:

make defconfig
make -j$(nproc)

这里 -j$(nproc) 的意思是「用满所有CPU核心来编译」。如果你的机器是4核,那就是 -j4。我第一次用8核机器编译时,看着终端刷刷刷地滚屏,那感觉确实挺爽的。

重要提醒:第一次编译会下载很多源码包,耗时较长。建议在网络稳定的环境下进行。如果中途断了,重新执行 make 会继续,不会从头开始。

编译完成后,在 output/images/ 目录下会生成 rootfs.tarrootfs.cpio 等文件。看到它们,就说明环境搭建成功了。

嗯,到这里,Buildroot 的环境就搭好了。下一章我们会用它来真正构建一个最小根文件系统,到时候你就知道这几步准备工作的价值了。


专注资料整理