🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [home](https://buildroot.org/download.html) > [github](https://github.com/buildroot/buildroot) ## 概述 Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架。 可用于 C++,CGO 等的交叉编译 ## buildroot目录结构 ``` arch: CPU架构相关的配置脚本 board: 在构建系统时,board默认的boot和Linux kernel配置文件,以及一些板级相关脚本 boot: uboot配置脚本目录 configs: 板级配置文件,该目录下的配置文件记录着该机器平台或者方案使用的工具链,boot, kernel,各种应用软件包的配置 dl: download的简写,下载一些开源包。第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间 docs: 文档 fs: 各种文件系统的自动构建脚本 linux: 存放Linux kernel的自动构建脚本 package: 第三方开源包的自动编译构建脚本,用来配置编译dl目录下载的开源包 support: system: 存放文件系统目录的和设备节点的模板,这些模板会被拷贝到output/目录下,用于制作根文件系统rootfs toolchain: 目录中存放着各种制作工具链的脚本 output: images/存储所有映像(内核映像,引导加载程序和根文件系统映像)的位置。这些是您需要放在目标系统上的文件。 build/构建所有组件的位置(包括主机上Buildroot所需的工具和针对目标编译的软件包)。该目录为每个组件包含一个子目录。 host/包含为主机构建的工具和目标工具链。 staging/是到内部目标工具链host/的符号链接 target/它几乎包含了目标的完整根文件系统。除了设备文件/dev/(Buildroot无法创建它们,因为Buildroot不能以root身份运行并且不想以root身份运行)之外,所需的一切都存在。 ``` ## buildroot常用make命令 ``` make menuconfig:进行图形化配置 make:编译 make clean:清除编译缓存 make distclean: 等于make clean+删除配置 show-targets:显示出本次配置所要编译所有的目标 pkg-target:单独编译某个pkg模块 pkg-rebuild:重新编译pkg pkg-extract:只下载解压pkg,不编译,pkg解压后放在 output/build/对应的pkg-dir目录下 pkg-source:只下载某pkg,然后不做任何事情 ``` ## 常用配置 ### target options ![](https://img.kancloud.cn/df/09/df09ea33669d577b90ee769140e584de_535x348.png) ### Toolchain ![](https://img.kancloud.cn/3e/90/3e90732294ff830fc53390d456d7b6d0_455x240.png) 选择外部的交叉编译器,以及选择你的版本。 ### System configuration ![](https://img.kancloud.cn/08/e9/08e928a6db045747711b9893161b4df3_524x246.png) 文件系统标志以及root登录密码以及相关一些配置。 ### Target packages 提供很多服务以及软件以及库,如 mysql ,python,vim , git ## 快速入门 0. 安装依赖 ``` sudo apt-get install libncurses5-dev ``` 1. 启动图形选项界面 ``` cd buildroot/ make menuconfig ``` 2. 查看目标机的查看 ``` > readelf -a /bin/echo ISA: MIPS64r2 GPR size: 64 CPR1 size: 64 CPR2 size: 0 FP ABI: 硬浮点 (单精度) ISA Extension: 无 ASEs: ``` 2. 设置需要编译的目标linux ``` Target options -> Target Architecture Target options -> Target Architecture Variant Target options -> Target ABI (一般为 n64) Target options -> Use soft-float ``` 3. 编译 ``` make ```