详情请参考: 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介绍的更多相关文章

  1. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  2. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  3. {python--GIL锁}一 介绍 二 GIL介绍 三 GIL与Lock 四 GIL与多线程 五 多线程性能测试

    python--GIL锁 GIL锁 本节目录 一 介绍 二 GIL介绍 三 GIL与Lock 四 GIL与多线程 五 多线程性能测试 一 背景知识 ''' 定义: In CPython, the gl ...

  4. Git系列教程二 基础介绍

    一.存储方式 如果让我们设计一个版本控制系统,最简单的方式就是每做一次更改就生成一个新的文件. 这样的方式太占用空间,所以传统的版本控制系统都是保存一个文件的某个版本的全部内容以及其他版本相对于这个版 ...

  5. WPF入门教程系列二——Application介绍

    一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...

  6. SaaS系列介绍之二: SaaS介绍

    1 引言 横看成岭侧成峰,远近高低各不同. 不识庐山真面目, 只缘身在此山中.                                                  ________苏轼, ...

  7. Python3.5 学习十二 数据库介绍

    MYSQL介绍: 主流三种数据库:Oracle.Mysql.Sqlserver Mysql安装和启动: windows 1安装 2启动服务 3进入bin目录,打开命令行 4 mysqladmin -u ...

  8. 教你看懂C++类库函数定义之二---STDMETHOD介绍

    一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...

  9. Python零基础学习系列之二--Python介绍及环境搭建

    1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...

随机推荐

  1. 广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点

    深搜,顾名思义,是深入其中.直取结果的一种搜索方法. 如果深搜是一个人,那么他的性格一定倔得像头牛!他从一点出发去旅游,只朝着一个方向走,除非路断了,他绝不改变方向!除非四个方向全都不通或遇到终点,他 ...

  2. python加密算法及其相关模块的学习(hashlib,RSA,random,string,math)

    加密算法介绍 一,HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种 ...

  3. 【STM32H7教程】第58章 STM32H7的硬件JPEG应用之图片解码显示

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第58章       STM32H7的硬件JPEG应用之图片解 ...

  4. 域名和URL各部分组成

    什么是域名? 域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传 输时标识计算机的电子方位. IP地址是Internet主机的作为路由寻址用的数字型标识,人 ...

  5. IDEA 设置 自动编译

    转载自:https://www.cnblogs.com/eyesfree/p/9321795.html 设置 File ->Setting ->Compile: 勾选"Make ...

  6. Emprie 使用基础笔记

    0x01 简介 empire 是一个后渗透攻击框架,具有加密通信和灵活框架的功能.Empire可以在不需要Powershell.exe的情况下执行PowerShell代理,后期利用的模块很强大,如sc ...

  7. pom.xml文件中properties有什么用

    properties标签的作用: 在标签内可以把版本号作为变量进行声明,后面dependency中用到版本号时可以用${变量名}的形式代替,这样做的好处是:当版本号发生改变时,只有更新properti ...

  8. element table批量删除

    很小的一个问题,但是有细节需要注意 (1)问题:在起初我写的时候是根据元素的name是否相同判断是否是同一个节点,出现的问题就是,如果说两个元素的name相同,就会判断出错 (2)代码: <te ...

  9. iOS 开发之 设计模式【一】原型模式 (Prototype pattern)

    原型模式(Prototype pattern): 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建对象.也可以理解为模板,在创建新对象的时候,按照模板的方法来复制,避免重复造轮子. 简单来 ...

  10. C++11常用特性介绍——decltype关键字

    一.decltype的意义 有时我们只想从表达式的类型推断出要定义的变量类型,但是不想用其值进行初始化的时候,C++11新标准引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在 ...