2、开发环境准备:安装Linux虚拟机(Ubuntu 22.04)、配置国内软件源、安装必要依赖包

说实话,很多初学者在Buildroot上栽跟头,不是因为工具本身多难,而是开发环境没搭好。我见过太多人卡在「编译报错」这一步,最后发现是依赖包没装全。嗯,这一节我们就来把地基打牢。

2.1 为什么选Ubuntu 22.04?

你可能要问:「用别的Linux发行版行不行?」当然可以。但我个人习惯用Ubuntu LTS版本,原因很简单——社区活跃,遇到问题搜一下就有答案。Ubuntu 22.04是2022年4月发布的长期支持版,官方支持到2027年,稳定得很。

我在项目中用过CentOS、Debian、甚至Arch Linux来跑Buildroot。说实话,CentOS的包太老,Arch又太激进,Ubuntu 22.04刚好处于一个「包够新、又稳定」的平衡点。你想想看,Buildroot本身要下载大量源码包,如果宿主机的工具链版本不对,编译时各种奇奇怪怪的报错就来了。

核心观点: 宿主机系统不需要多花哨,稳定、包全、社区支持好,就是好环境。

2.2 安装虚拟机:VMware还是VirtualBox?

如果你已经在用物理机上的Linux,那直接跳过这节。但如果你是Windows用户,我建议用虚拟机。我个人更推荐VMware Workstation Player(免费版),性能比VirtualBox稍好一些,而且对USB设备、网络桥接的支持更稳定。

安装步骤很简单,我快速过一下:

  1. 下载Ubuntu 22.04的ISO镜像(建议用桌面版,方便操作)
  2. 新建虚拟机,分配至少4GB内存、2个CPU核心、40GB硬盘
  3. 网络模式选「桥接模式」,这样虚拟机跟宿主机在同一网段
  4. 安装时选「最小安装」,省得装一堆用不上的办公软件
小技巧: 硬盘别用默认的20GB。Buildroot编译一次,下载的源码包和临时文件轻松吃掉10GB+。我吃过这个亏,后来统一给40GB。

2.3 配置国内软件源:别让网速拖后腿

装好系统第一件事是什么?换源!Ubuntu默认的软件源在国外,apt update慢得让人抓狂。我曾经等一个apt upgrade等了半小时,后来换了阿里云的源,十几秒搞定。

操作很简单,修改 /etc/apt/sources.list 文件:

# 备份原文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 编辑源列表
sudo vi /etc/apt/sources.list

把里面的内容全部替换成以下内容(以阿里云镜像为例):

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

然后执行:

sudo apt update
sudo apt upgrade -y
注意: 如果你用的是Ubuntu 22.04以外的版本,把「jammy」换成对应的代号。比如20.04是「focal」,24.04是「noble」。别搞混了,否则apt会报404。

2.4 安装必要依赖包:一个都不能少

Buildroot对宿主机的依赖其实不多,但缺一个就编译不过。我整理了一个清单,你直接复制粘贴就行:

sudo apt install -y \
    git \
    gcc \
    g++ \
    make \
    libncurses-dev \
    flex \
    bison \
    bc \
    cpio \
    rsync \
    unzip \
    wget \
    file \
    python3 \
    python3-pip \
    libssl-dev \
    libelf-dev

这里面有几个关键包,我单独说一下:

  • libncurses-dev:Buildroot的menuconfig配置界面依赖它。没装的话,你执行 make menuconfig 会直接报错。
  • flex、bison:词法分析和语法分析工具。Buildroot在编译某些软件包(比如U-Boot、Linux内核)时会用到。
  • bc:一个计算器工具。你可能觉得奇怪,编译内核怎么会用到计算器?其实内核的Kconfig系统用bc来做一些数值运算。
  • libssl-dev、libelf-dev:编译内核模块和签名时需要。我遇到过编译到一半报错说找不到openssl头文件,就是少了这个。
避坑指南: 我曾经在Ubuntu 20.04上少装了libelf-dev,结果编译Linux内核时卡在最后一步,报错信息特别隐晦。查了半天才发现是缺少这个包。所以建议你一次性装全,别省事。

2.5 验证环境:跑个小测试

装完依赖后,我习惯跑一个简单的测试,确保gcc和make能正常工作。写个hello.c:

#include <stdio.h>

int main() {
    printf("Buildroot 环境准备 OK!\n");
    return 0;
}

然后编译运行:

gcc hello.c -o hello
./hello

如果看到输出「Buildroot 环境准备 OK!」,说明gcc和make都没问题。接下来可以测试一下git:

git --version

输出类似 git version 2.34.1 就对了。

2.6 本章知识体系

下面这张图帮你理清开发环境准备的整个流程:

开发环境准备流程 安装虚拟机 VMware / VirtualBox 安装Ubuntu 22.04 桌面版 / 服务器版 配置国内软件源 阿里云 / 清华 / 中科大 安装必要依赖包 git gcc make libncurses-dev flex bison bc cpio rsync libssl-dev libelf-dev 验证环境:gcc测试 + git测试

这张图把整个流程串起来了。你按这个顺序走,基本不会出问题。如果中间哪一步卡住了,回头检查一下上一步有没有漏掉。

个人建议: 装好环境后,拍个快照。万一后面搞坏了,直接恢复快照,省得重装系统。我每次搭新环境都会这么做,省了不少时间。

好了,环境准备就到这里。下一节我们开始真正接触Buildroot——下载源码、配置、编译,一步步来。


专注资料整理