第1章:环境准备——Linux主机要求、安装必要依赖包、配置Git和Repo、磁盘空间规划

各位同学,咱们正式开始。

搭建Buildroot交叉编译环境,第一步不是下载代码,而是先把你的“工作台”收拾利索。我见过太多人一上来就git clone,结果编译到一半报错,回头一看——哦,依赖没装全。嗯,这种坑咱们今天一次性填平。

1.1 Linux主机要求

先说硬件。Buildroot本身不挑机器,但交叉编译是个体力活。我个人建议:

  • CPU:4核以上。我试过双核编译一个完整系统,去泡了杯咖啡回来还在跑……后来换了8核,时间直接砍半。
  • 内存:至少8GB。16GB更稳。为什么?因为编译过程中有些大包(比如Qt、WebKit)会吃内存,8GB勉强够,16GB你可以在编译的同时开浏览器查资料。
  • 硬盘:至少50GB空闲空间。这个后面细说。
  • 操作系统:Ubuntu 20.04 LTS 或 Debian 11 以上。我个人偏爱Ubuntu 22.04,包比较新,省事。
注意:别用Windows WSL1,文件系统性能太差。WSL2勉强可以,但我还是推荐原生Linux或者虚拟机里装Ubuntu。

1.2 安装必要依赖包

这是最容易出问题的一步。我刚开始做嵌入式时,就因为在Ubuntu上少装了一个libncurses-dev,结果menuconfig界面死活打不开。后来学乖了,直接装全。

在Ubuntu/Debian上,执行以下命令:

sudo apt update
sudo apt install -y \
    build-essential \
    git \
    repo \
    wget \
    cpio \
    unzip \
    file \
    rsync \
    bc \
    python3 \
    python3-distutils \
    libncurses-dev \
    libssl-dev \
    flex \
    bison \
    gcc-multilib \
    libc6-dev-i386 \
    lib32z1 \
    lib32stdc++6

这里我解释几个关键包:

  • build-essential:编译工具链,gcc、g++、make都在里面。
  • libncurses-dev:没有它,你打不开make menuconfig
  • libssl-dev:很多包下载需要HTTPS支持。
  • flexbison:词法分析和语法分析工具,Buildroot内部会用到。
  • gcc-multilib:如果你要编译32位目标,这个必须装。
小技巧:装完后可以用dpkg -l | grep <包名>检查是否装上了。我曾经在Debian上漏了python3-distutils,结果编译到一半报错,排查了半天。

1.3 配置Git和Repo

Buildroot的源码管理用的是Git,而Repo是Google出的多仓库管理工具。虽然Buildroot本身只有一个仓库,但如果你后续要管理多个BSP(板级支持包),Repo会非常方便。

配置Git:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui auto

这里有个细节——user.nameuser.email不配也行,但提交代码时会报错。我个人习惯配成公司邮箱,方便追溯。

安装Repo:

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc

验证一下:

repo --version

如果看到版本号,说明装好了。

注意:Repo依赖Python 3。如果你系统里默认Python是2.7,记得装python-is-python3这个包。我踩过这个坑,Repo脚本直接报语法错误。

1.4 磁盘空间规划

这是很多人忽略的一步。Buildroot编译过程中,会下载源码包、生成中间文件、最终输出镜像。我算过一笔账:

项目 预估空间 说明
Buildroot源码 约500MB 包含所有构建脚本
下载的源码包(dl目录) 2~5GB 取决于你选的包,比如Qt、GStreamer都很大
编译输出(output目录) 5~15GB 包含工具链、根文件系统、内核镜像
临时文件 2~5GB 编译过程中产生的中间文件
总计 10~25GB 建议预留50GB以上

我个人建议这样规划目录结构:

~/buildroot/
├── dl/          # 下载的源码包(可复用)
├── output/      # 编译输出
└── buildroot/   # 源码目录

为什么要单独分出dl目录?因为如果你同时维护多个板子,源码包可以共享,不用重复下载。我当年在公司就是这么干的,省了至少10GB空间。

提示:如果你硬盘空间紧张,可以定期清理output/build/下的编译中间文件。用make clean就行,但注意这会清掉所有编译产物,下次得重新编译。

1.5 验证环境

装完所有东西后,我习惯跑一个快速验证:

which git
which repo
gcc --version
python3 --version

如果都能正常输出,恭喜你,环境准备好了。

嗯,这一章内容不多,但都是实打实的经验。别嫌麻烦,把这一步做扎实了,后面编译的时候你会感谢自己的。

下一章,咱们开始下载Buildroot源码,并做第一次配置。