- 让嵌入式linux开发更容易
- 管理一切!为嵌入式设备生成交叉编译工具链,文件系统,交叉编译bootloader和kernel image
- 易用!所有配置通过像linux一样的menuconfig,gconfig和xconfig
- 支持丰富的package资源,构建你需要的rootfs
- 由Makefile和Kconfig构成
使用流程
- 选择一个defconfig
- 根据需要配置buildroot
- 编译buildroot
- 在目标板上运行buildroot构建的系统
目录介绍
fuqiang@ubuntu:~/workspace/rk3588/rk3588/buildroot$ tree -L 1
.
├── arch //存放CPU架构相关的配置脚本,如arm/mips/x86,这些CPU相关的配置,在制作工具链时,编译uboot和kernel时很关键
├── board //具体单板相关的文件
├── boot //bootloaders 的构建、配置文件
├── build
├── CHANGES //Buildroot 修改日志
├── Config.in
├── Config.in.legacy
├── configs //放置开发板的一些配置参数
├── COPYING
├── DEVELOPERS
├── dl //编译过程中生成,存放下载的源代码及应用软件的压缩包
├── docs //存放相关的参考文档
├── fs //放各种文件系统的源代码
├── linux //存放着Linux kernel的自动构建脚本
├── Makefile
├── Makefile.legacy
├── output //编译过程中生成,是编译出来的输出文件夹
│ ├── build //存放解压后的各种软件包编译完成后的现场
│ ├── host //存放着制作好的交叉编译工具链,如gcc、arm-linux-gcc等工具
│ ├── images //存放着编译好的uboot.bin, zImage, rootfs等镜像文件,可烧写到板子里, 让linux系统跑起来
│ ├── target //用来制作rootfs文件系统,里面放着Linux系统基本的目录结构,以及编译好的应用库和bin可执行文件
├── package //下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk
├── README //Buildroot 简单说明
├── support //为 Bulidroot 提供功能支持的脚本、配置文件
├── system //制作根文件系统的构建、配置文件
├── toolchain //交叉编译工具链的构建、配置文件
└── utils //实用工具
15 directories, 8 files
配置
整体配置
make menuconfig
Target options //选择目标板架构特性。
Build options //配置编译选项。
Toolchain //配置交叉工具链,使用buildroot工具链还是外部提供。
System configuration //系统配置
Kernel //配置内核
Target packages //配置应用包
Filesystem images //配置文件系统
Bootloaders //硬件启动程序
Host utilities //
Legacy config options //
内核配置
对Linux内核的配置包括两部分:
- 通过make menuconfig进入Kernel对内核进行选择
- 通过make linux-menuconfig对内核内部进行配置
buildroot框架
细节
常见问题
单独编译某一个包?
以libv4l为例:
- souce build/envsetup.sh
- 确保模块已经打开,如果已经打开,忽略此步骤,进入buildroot主目录后,make menuconfig,利用 / 搜索模块所在位置,利用 Y 选中模块,退出make menuconfig
- buildroot主目录,执行 make libv4l-rebuild
- 在 buildroot/output/XXX平台/target/usr/bin 下可找到可执行文件,可执行文件需要的库可以在buildroot/output/XXX平台/target/usr/lib下找到