(二)Buildroot介绍
详情请参考: http://www.buildroot.org/downloads/manual/manual.html
参考博客: https://www.cnblogs.com/arnoldlu/p/9553995.html
Buildroot是一个为嵌入式平台构建一个完整Linux系统的工具,它可以生成交叉编译工具、文件系统、Linux内核和bootloader。
目录结构
./buildroot$ tree -L 1 -d
.
├── arch
目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。
├── board
存放了一些默认开发板的配置补丁之类的。
├── boot
├── configs
放置支持的开发板的默认配置文件。
├── dl
存放下载的源码包及应用软件的压缩包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。本身下载通常都是很慢的,你可以手动找到相关包下载后放到这里就OK了,make时会自动检测这个目录。
├── docs
存放相关的参考文档。
├── fs
放各种文件系统的源代码;fs/skeleton:放生成文件系统镜像的地方,及板子里面的系统。
├── linux
存放着Linux kernel的自动构建脚本。
├── output
是编译出来的输出文件夹。
/buildroot/output$ tree -L 1 -d
.
├── build
所有源码包解压出来的文件存放地和编译的发生地。
├── host
是由各类源码编译后在你主机上运行的工具(build for host)的安装目录,如arm-linux-gcc就是安装在这里。
├── images
编译好的镜像。
├── staging -> /work/buildroot/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot
└── target
用来制作rootfs文件系统,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。
├── package
下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk。
├── support
├── system
这里就是根目录的主要骨架了和相关的启动初始化配置,当制作根目录时就是将此处的文件cp到output里去。然后再安装toolchain的动态库和你勾选的package的可执行文件之类的.
├── toolchain
└── utils
make命令使用
通过make help可以看到buildroot下make的使用细节,包括对package、uclibc、busybox、linux以及文档生成等配置。
Cleaning:
clean - delete all files created by build
distclean - delete all non-source files (including .config)
Build:
all - make world
toolchain - build toolchain
Configuration:
menuconfig - interactive curses-based configurator--------------------------------对整个buildroot进行配置
savedefconfig - Save current config to BR2_DEFCONFIG (minimal config)-----------保存menuconfig的配置
Package-specific:-------------------------------------------------------------------------------对package配置
<pkg> - Build and install <pkg> and all its dependencies-------------单独编译对应APP
<pkg>-source - Only download the source files for <pkg>
<pkg>-extract - Extract <pkg> sources
<pkg>-patch - Apply patches to <pkg>
<pkg>-depends - Build <pkg>'s dependencies
<pkg>-configure - Build <pkg> up to the configure step
<pkg>-build - Build <pkg> up to the build step
<pkg>-show-depends - List packages on which <pkg> depends
<pkg>-show-rdepends - List packages which have <pkg> as a dependency
<pkg>-graph-depends - Generate a graph of <pkg>'s dependencies
<pkg>-graph-rdepends - Generate a graph of <pkg>'s reverse dependencies
<pkg>-dirclean - Remove <pkg> build directory--------------------------------------清除对应APP的编译目录
<pkg>-reconfigure - Restart the build from the configure step
<pkg>-rebuild - Restart the build from the build step--------------------------------单独重新编译对应APP
busybox:
busybox-menuconfig - Run BusyBox menuconfig
uclibc:
uclibc-menuconfig - Run uClibc menuconfig
linux:
linux-menuconfig - Run Linux kernel menuconfig-----------------------------------------配置Linux并保存设置
linux-savedefconfig - Run Linux kernel savedefconfig
linux-update-defconfig - Save the Linux configuration to the path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
Documentation:
manual - build manual in all formats
manual-pdf - build manual in PDF
graph-build - generate graphs of the build times----------------------------------对编译时间、编译依赖、文件系统大小生成图标
graph-depends - generate graph of the dependency tree
graph-size - generate stats of the filesystem size
buildroot框架
Buildroot提供了函数框架和变量命令框架(下一篇文章将介绍细节),采用它的框架编写的app_pkg.mk这种Makefile格式的自动构建脚本,将被package/pkg-generic.mk 这个核心脚本展开填充到buildroot主目录下的Makefile中去。
最后make all执行Buildroot主目录下的Makefile,生成你想要的image。 package/pkg-generic.mk中通过调用同目录下的pkg-download.mk、pkg-utils.mk文件,已经帮你自动实现了下载、解压、依赖包下载编译等一系列机械化的流程。
你只要需要按照格式写Makefile脚app_pkg.mk,填充下载地址,链接依赖库的名字等一些特有的构建细节即可。 总而言之,Buildroot本身提供构建流程的框架,开发者按照格式写脚本,提供必要的构建细节,配置整个系统,最后自动构建出你的系统。

对buildroot的配置通过Config.in串联起来,起点在根目录Config.in中。
|
配置选项 |
Config.in位置 |
|
Target options |
arch/Config.in |
|
Build options |
Config.in |
|
Toolchain |
toolchain/Config.in |
|
System configuration |
system/Config.in |
|
Kernel |
linux/Config.in |
|
Target packages |
package/Config.in |
|
Target packages->Busybox |
|
|
Filesystem images |
fs/Config.in |
|
Bootloaders |
boot/Config.in |
|
Host utilities |
package/Config.in.host |
|
Legacy config options |
Config.in.legacy |
(二)Buildroot介绍的更多相关文章
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- {python--GIL锁}一 介绍 二 GIL介绍 三 GIL与Lock 四 GIL与多线程 五 多线程性能测试
python--GIL锁 GIL锁 本节目录 一 介绍 二 GIL介绍 三 GIL与Lock 四 GIL与多线程 五 多线程性能测试 一 背景知识 ''' 定义: In CPython, the gl ...
- Git系列教程二 基础介绍
一.存储方式 如果让我们设计一个版本控制系统,最简单的方式就是每做一次更改就生成一个新的文件. 这样的方式太占用空间,所以传统的版本控制系统都是保存一个文件的某个版本的全部内容以及其他版本相对于这个版 ...
- WPF入门教程系列二——Application介绍
一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...
- SaaS系列介绍之二: SaaS介绍
1 引言 横看成岭侧成峰,远近高低各不同. 不识庐山真面目, 只缘身在此山中. ________苏轼, ...
- Python3.5 学习十二 数据库介绍
MYSQL介绍: 主流三种数据库:Oracle.Mysql.Sqlserver Mysql安装和启动: windows 1安装 2启动服务 3进入bin目录,打开命令行 4 mysqladmin -u ...
- 教你看懂C++类库函数定义之二---STDMETHOD介绍
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...
- Python零基础学习系列之二--Python介绍及环境搭建
1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...
随机推荐
- java 如何快速的获取浏览量
最近公司做了一个类似 于发帖,交友圈一个这样的功能 在如何精确快速的获取用户的浏览量,且及时的更新显示,最初我是这样想,把每条帖子内容浏览量放到reids 里面,但是redis只是用来存零时数据,想想 ...
- 安卓之文本视图TextView及跑马灯效果
一.基本属性和设置方法 二.跑马灯用到的属性与方法说明 三.省略方式的取值说明 四.跑马灯效果案例代码 (1)布局xml文件 <?xml version="1.0" en ...
- touchstart和click 自动区分
var clickEvent = (function() { if ('ontouchstart' in document.documentElement === true) return 'touc ...
- try catch和if else
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息.描述这种情况的技术术语是:JavaScript 将抛出一个错误. try 语句允许我们定义在执行时进行错误测试的 ...
- redhat7.6 配置主从DNS
主DNS配置include指向的配置文件 /etc/named.rfc1912.zone 下面图片配置内容/etc/named.rfc1912.zones 从DNS配置 /etc/named.conf ...
- sort的使用
sort主要是用来排序的,可以用自定义的函数进行比较,也可以用系统的4中函数进行比较,即less(),greater(),less_equal(),greater_equal().但是我试了一下,发现 ...
- ParameterizedType 使用方法
ParameterizedType 它是jdk提供的参数化类型,包括了如下 请求参数,和响应参数都是 参数话类型.记住凡是含有<T>中的都是参数话类型. public static < ...
- 创建mysql数据库,在新数据库中创建表,再尝试删除表
创建之前,先登录数据库存 mysql -u 账号 -p密码 登录完成后,展示一下已存在的数据库 show databases; 创建数据库 create database test111; 然后展示一 ...
- django 中url与path小记
1. 在django 2.0中增加了一些新的特性 更简单的URL路由语法 (Simplified URL routing syntax) admin应用的针对移动设备的优化改进(Mobile-frie ...
- PyQt5控件支持拖拽方法
让控件支持拖拽动作A.setDragEnable(True) 设置A可以拖动B.setAcceptDrops(True) 设置B可以接受拖动B需要满足两个事件1.dragEnterEvent 将A拖到 ...