buildroot记录

添加包:ffmpeg python git make cvs check tree yasm nfs kmod watchdog qemu dhcped

https://buildroot.org/downloads/manual/manual.html

Buildroot 是 Linux 平台上一个开源的嵌入式 Linux 系统自动构建框架。

Buildroot

arch/ 目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。

board/ 目录存放各种board 特有的一些配置脚本,在构建系统时,board默认的boot和Linux kernel配置文件,以及一些板相关特殊构建流程的脚本,都在该目录下,等待自动构建时调用。

boot/ 目录存在各种boot软件的自动构建脚本,不只是u-boot,还有grub等,也可以通过Buildroot来构建。

configs/ 目录存放这每种方案上层的全局配置文件,之前的make mini2440_defconfig实际上就是调用了该目录下的mini2440方案的配置。该目录下的配置文件记录着该机器平台或者方案使用的工具栏,boot, kernel,各种应用软件包的配置和是否编译选择的状态,之前所说的某个特殊开发板整个系统的配置文件,就在configs/目录下。

dl/ 目录存在从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。

docs/ 存放相关的参考文档。

fs/ 存放着各种文件系统的自动构建脚本。

linux/ 存放着Linux kernel的自动构建脚本。

output/ 是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的各种mage。

package/ 目录存放着各种第三方开源应用软件包的自动编译构建脚本,这些构建脚本一般都是经过测试,能够构建出相应的软件包的。

support/ 目录存放着一些固定的流程脚本,以备构建时调用执行。

system/ 目录存放着文件系统目录的和设备节点的模板,这些模板会被拷贝到 output/ 目录下,用于制作根文件系统rootfs。

toolchain/ 目录中存放着各种制作工具链的脚本,buildroot可以选择从0开始,用gcc和linux 内核,glibc、uclibc库等原材料制作一个自己工具链,也可以下载第三方制作好的开源工具。

Config.in: menuconfig中需要显示的数据格式存在该文件中。

**.config:**编译时需要调用的选项配置文件。

buildroot用户指南

搜索指令在menuconfig中按/;在xconfig按+

make distclean 清楚所有配置信息和构建信息

6.1 Cross-compilation toolchain

工具链:工具+链

Internal toolchain backend

交叉编译工具链 目标嵌入式系统的应用程序和库;

该后端支持多个 C 库:uClibc-ngglibcmusl

External toolchain backend

允许使用现有的预构建 交叉编译工具链;

可通过Internal toolchain backend 的make sdk指令,通过External toolchain backend调用自定义工具链。

相对于internal toolchain,external toolchain有如下优点:
a.省去编译toolchain的时间,加快编译速度
b.避免编译工具链时出错
c.可以同时保存多个不同的工具链,根据实际情况进行构建不同的固件或者多个项目共用一套toolchain而不在需要重新编译

6.2 /dev管理

Static using device table

老版本kernel使用。设备文件被持久地存储在根文件系统中(也就是说,它们在重新引导后也一直存在),并且当硬件设备被添加或从系统中删除时,没有任何东西会自动创建和删除这些设备文件。

Dynamic using devtmpfs only

基于虚拟根文件系统 需要是能CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT 但是没搜到在哪 ,buildroot会保证它被使能,如果内核在buildroot外部的话需要自己使能。可以自动识别设备的添加和删除。

Dynamic using devtmpfs + mdev

类似于上面,但是增加了mdev用户空间,Mdev可用于在系统上出现设备时自动加载内核模块。如果您的设备需要固件,那么Mdev也很重要,因为它将负责将固件内容推送到内核。

Dynamic using devtmpfs + eudev

类似于上面,但是比mdev更重量化,并且功能更多。

6.3 init system

init程序是内核启动的第一个用户空间程序(其PID号为1),负责启动用户空间服务和程序(例如:web服务器、图形应用程序、其他网络服务器等)。

BusyBox:默认初始化系统

systemV:在桌面化系统中

systemd:存在于较为复杂的系统

7.Configuration of other components

关于以下组件的配置:

BusyBox

uClibc

Linux kernel

Barebox

U-Boot

8.General Buildroot usage

8.1make tips

清理:当任何体系结构或工具链配置选项发生更改时,需要显式清理。删除所有构建产品(包括构建目录、主机、暂存和目标树、映像和工具链)。及清除/output下的所有文件

make clean

重置新目标的构建根:删除所有构建产品以及配置:

make distclean

8.2. Understanding when a full rebuild is necessary

8.3. Understanding how to rebuild packages

最简单的方式是:

sudo make <package>-dirclean //删除包
sudo make //使用 make rebuild 或者make reconfigure并不会改变根文件系统中的镜像。

8.4. Offline builds

8.4. Offline builds

8.5. Building out-of-tree 可以指定文件的输出路径。

8.6. Environment variables

8.7. Dealing efficiently with filesystem images

在编译主机上可以使用稀疏文件传输以及压缩指令,但是在目标机上不行。

8.8. Details about packages

为了帮助理解依赖关系,从而更好地理解嵌入式Linux系统中不同组件的角色,builroot能够生成依赖关系图。

8.9. Graphing the dependencies between packages

当系统的构建需要很长时间时,了解哪些包的构建时间最长,看看是否可以做些什么来加快构建速度,有时是有用的。

8.10. Graphing the build duration

8.11. Graphing the filesystem size contribution of packages

8.12. Top-level parallel build

8.13. Advanced usage

8.13.1. Using the generated toolchain outside Buildroot

8.13.2. Using gdb in Buildroot

8.13.3. Using ccache in Buildroot

8.13.4. Location of downloaded packages

8.13.5. Package-specific make targets

8.13.6. Using Buildroot during development

常用指令

Cleaning:                            - 清理
  make clean                         - 删除编译产生的文件
  make distclean                     - 删除所有非源码文件—(包括.config)

Build:                               - 编译
  make all                           - 编译所有
  make toolchain                     - 编译工具链
  make sdk                           - 编译sdk(Software Development Kit)

Configuration:                       - 配置
  make menuconfig                    - 基于curses的buildroot配置界面(常用)
  make nconfig                       - 基于ncursesbuildroot配置界面
  make xconfig                       - 基于Qt的buildroot配置界面
  make gconfig                       - 基于GTK的buildroot配置界面
  make oldconfig                     - 解决所有.config中未解决的符号问题(symbols)
  make syncconfig                    - 和oldconfig类似,但会额外更新依赖
  make olddefconfig                  - 和syncconfig类似,但会将新的symbols设为默认值
  make randconfig                    - 所有选项随机配置
  make defconfig                     - 所有选项都询问,如果设置有BR2_DEFCONFIG,则使用它的配置
  make savedefconfig                 - 把当前配置保存到BR2_DEFCONFIG
  make update-defconfig              - 类似savedefconfig
  make allyesconfig                  - 所有配置选项都选择yes
  make allnoconfig                   - 所有配置选项都选择no
  make alldefconfig                  - 所有配置选项都选择default
  make randpackageconfig             - 软件包选项都选择随机
  make allyespackageconfig           - 软件包选项都选择yes
  make allnopackageconfig            - 软件包选项都选择no

Package-specific:                    - 具体的包操作
  make <pkg>                         - 编译、安装该pkg以及其依赖
  make <pkg>-source                  - 下载该pkg所有文件
  make <pkg>-extract                 - 解压该pkg(解压后放在output/build/pkg名字目录下)
  make <pkg>-patch                   - 给该pkg打补丁
  make <pkg>-depends                 - 编译pkg的依赖
  make <pkg>-configure               - 编译pkg到配置这一步
  make <pkg>-build                   - 编译pkg到构造这一步
  make <pkg>-show-depends            - 显示该pkg的所有依赖
  make <pkg>-show-rdepends           - 显示依赖该pkg的所有包
  make <pkg>-show-recursive-depends  - 递归显示该pkg的所有依赖
  make <pkg>-show-recursive-rdepends - 递归显示依赖该pkg的所有包
  make <pkg>-graph-depends           - 图形化显示该pkg的所有依赖
  make <pkg>-graph-rdepends          - 图形化显示依赖该pkg的所有包
  make <pkg>-dirclean                - 清除该pkg目录(清除解压目录output/build/pkg名字)
  make <pkg>-reconfigure             - 从配置这一步开始重新编译pkg
  make <pkg>-rebuild                 - 从构造这一步开始重新编译pkg

busybox:                             - busybox相关
  make busybox-menuconfig            - 配置busybox界面

uclibc:                              - uclibc相关
  make uclibc-menuconfig             - 配置uclibc界面

linux:                               - linux相关
  make linux-menuconfig              - 配置linux内核界面
  make linux-savedefconfig           - 保存linux内核配置
  make linux-update-defconfig        - 保存配置到BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE指定路径

Documentation:                       - 文档
  make manual                        - 生成各种格式的帮助手册
  make manual-html                   - 生成HTML格式的帮助手册
  make manual-split-html             - 生成split HTML格式的帮助手册
  make manual-pdf                    - 生成PDF格式的帮助手册
  make manual-text                   - 生成text格式的帮助手册
  make manual-epub                   - 生成ePub格式的帮助手册
  make graph-build                   - 生成图形化查看编译时间文件
  make graph-depends                 - 生成图形化查看所有依赖文件
  make graph-size                    - 生成图形化查看文件系统大小文件
  make list-defconfigs               - 显示拥有的默认配置的单板列表

Miscellaneous:                       - 杂项
  make source                        - 下载所有要离线编译的源码到dl路径
  make external-deps                 - 列出使用的所有外部包(make show-targets的详细版)
  make legal-info                    - 显示所有包的license合规性
  make printvars                     - 打印所有内部指定的变量值
  make V=0|1                         - 设置编译打印信息(0:安装编译 1:打印编译信息)
  make O=dir                         - 指定所有文件(包括.config)输出目录
  
  make xxx_defconfig 			    - 将对应的默认配置导入

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值