buildroot
为了和文件系统区分,本文将根目录中的内容称为根文件结构。
buildroot是一个构造根文件结构的工具,在使用buildroot之前我们可能常常使用busybox构建根文件结构。busybox包含Linux的很多基本工具,但是在开发过程中往往需要移植一些busybox中不包含的其它工具。而buildroot更像增强版的busybox,使原来busybox不包含的工具也能通过menuconfig菜单选中并自动加到最终的根文件结构中。
buildroot的核心依然是busybox,通过busybox构架基本的文件结构。随后根据每个软件包的安装脚本将对应的软件安装到基本的根文件结构中。所以说buildroot更像增强版的busybox
一、buildroot基本目录介绍
只介绍常用的,全部的详细介绍可以到网上查找。
- buildroot/package/:存放软件包的配置文件,编译安装脚本
- buildroot/output:输出 文件
- host:当前平台工具
- build:所有源码包解压出来的文件存放地和编译的发生地
- target:存放Linux的文件结构,但是并不是最终使用的文件结构
- Images:生成镜像存放的目录
- buildroot/dl:软件包的存放位置
需要注意的是dl
文件夹,编译过程中会在此目录查找软件包,如果找不到会通过网络进行下载。如果此时网络连接超时(懂的都懂)编译过程就会停止。我们可以自行下载软件包放到对应的目录即可。
二、buildroot的配置
在首次配置时需要指定自己的交叉编译工具链,平台等。当然如果有芯片官方支持的buildroot就无需配置了。
- Target options:目标选项
- Target Architecture:目标架构 【AArch64 (little endian)】
- Target Architecture Variant:子架构 【cortex-A53】
- Floating point strategy:浮点运算器【VFPv4-D16】
- Toolchain:工具链配置
- Toolchain type:工具链类型【External toolchain】
- Toolchain:【Custom toolchain】
- Toolchain origin:【Pre-installed toolchain】
- Toolchain path:工具链路径【/opt/linux/x86-arm/aarch64-mix210-linux】只需到bin的上层目录即可
- Toolchain prefix:工具链前缀【aarch64-mix210-linux】最后无需-
- External toolchain gcc version:gcc版本【7.x】根据实际选择,否则会报错,可执行aarch64-mix210-linux- –version查看
- External toolchain kernel headers series:【4.19.x】如果报错了就配置一下(Incorrect selection of kernel headers: expected 2.6.x, got 4.19.x)
- External toolchain C library:工具链C库【glibc】
- Toolchain has C++ support:工具链支持C++
- System configuration
- Root filesystem overlay directories:指定一个目录,会使用该目录覆盖生成的根文件结构得到最终的根文件结构。可以在这个目录添加自己想放到根文件结构中的文件。
- Target packages:在此选项下选择自己需要的软件包
- Filesystem images:在此选择最终的镜像格式
目标选项并不多,如果可以尽量选择更贴近平台的选项。至少选定目标架构
以上是基本配置,更多配置可以在menuconfig中查看
三、编译
由于在配置中已经指定架构、工具链,因此编译时无需重新指定。
1 | make -j 20 |
编译后的镜像在output/Images目录