“Buildroot”的版本间的差异
来自百问网嵌入式Linux wiki
(未显示2个用户的108个中间版本) | |||
第1行: | 第1行: | ||
− | + | =buildroot简介= | |
− | + | :Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。<br> | |
− | + | :你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。<br> | |
+ | :如何使用make menuconfig 请参考[[Menuconfig_or_how_to_configure_kernel]]<br> | ||
+ | :官网使用手册 https://buildroot.org/downloads/manual/manual.html | ||
+ | =buildroot功能详解= | ||
+ | * [[Buildroot_TargetOptions | TargetOptions ]] | ||
+ | ::目标单板架构配置。 | ||
+ | * [[Buildroot_BuildOptions | BuildOptions ]] | ||
+ | ::主要是一些编译时用到的选项,比如dl的路径,下载代码包使用的路径,同时运行多个编译的上限,是否使能编译器缓冲区等等,这里按照默认就行了. | ||
+ | * [[Buildroot_Toolchain | Toolchain ]] | ||
+ | ::此页面主要介绍如何使用buildroot配置内部交叉编译工具链,以及外部交叉编译工具链,还有如何添加自己的交叉编译工具链! | ||
+ | * [[Buildroot_SystemConfiguration | SystemConfiguration ]] | ||
+ | :: 此页主要涉及配置系统主机名,登陆欢迎信息root密码,以及构建系统镜像版本,根文件系统覆盖! | ||
+ | * [[Buildroot_Kernel | Kernel ]] | ||
+ | ::此页面主要介绍在线下载内核源码并自动编译集成到根文件系统的方法! | ||
+ | * [[Buildroot_TargetPackages | TargetPackages ]] | ||
+ | ::此页主要介绍目标开发板上使用的根文件系统所需要的软件包的添加方法,以及配置方法! | ||
+ | :*[[Buildroot_Audio and video applications | Audio and video applications]] | ||
+ | :::此页主要介绍buildtroot支持的音频和视频应用功能介绍以及如何配置使用 | ||
+ | :*[[Buildroot_Compressors and decompressors | Compressors and decompressors]] | ||
+ | :::此页主要介绍buildtroot支持的压缩和解压应用简介以及如何配置使用 | ||
+ | :*[[Buildroot_Debugging profiling and benchmark |Debugging profiling and benchmark]] | ||
+ | :::此页面主要介绍buildroot 调试、分析和基准测试应用的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Development tools | Development tools]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的开发工具应用的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Filesystem and flash utilities | Filesystem and flash utilities]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的文件系统和闪存实用程序的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Fonts cursors icons sounds and themes |Fonts cursors icons sounds and themes]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的字体,游标,图标,声音和主题的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Games | Games]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的游戏 以及如何配置使用。 | ||
+ | :*[[Buildroot_Graphic libraries and applications | Graphic libraries and applications]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的图形库和应用程序(图形/文本)的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Hardware handling | Hardware handling]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的硬件处理应用/工具的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Interpreter languages and scripting | Interpreter languages and scripting]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的编程语言和脚本的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Libraries | Libraries]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的库的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Mail| Mail]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的邮箱应用的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Miscellaneous | Miscellaneous]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的一些杂项应用的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Networking applications | Networking applications]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的网络应用程序的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Package managers | Package managers]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 包管理 应用的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Real-Time | Real-Time]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Security | Security]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Shell and utilities | Shell and utilities]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 Shell和程序 的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_System tools |System tools]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 系统工具 的简介以及如何配置使用。 | ||
+ | :*[[Buildroot_Text editors and viewers | Text editors and viewers]] | ||
+ | :::此页面主要介绍buildroot支持在目标系统上的 文版编辑和浏览工具 的简介以及如何配置使用。 | ||
+ | * [[Buildroot_FilesystemImages | FilesystemImages ]] | ||
+ | ::此页介绍如何使用buildroot自动根据系统分区生成相应的系统镜像! | ||
+ | * [[Buildroot_Bootloaders | Bootloaders ]] | ||
+ | ::此页主要介绍在线下载u-boot源码,编译并生成相应的镜像文件到指定位置! | ||
+ | * [[Buildroot_HostUtilities | HostUtilities ]] | ||
+ | :: | ||
+ | * [[Buildroot_LegacyConfigOptions | LegacyConfigOptions ]] | ||
+ | |||
+ | =目录结构= | ||
+ | *<code>buildroot/package/:</code>下面放着应用软件的配置文件,每个应用软件的配置文件有<code>Config.in</code>和<code>soft_name.mk</code>,其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。 | ||
+ | *<code>buildroot/output/:</code>是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。 | ||
+ | **<code>build:</code>所有源码包解压出来的文件存放地和编译的发生地 | ||
+ | **<code>staging:</code>软链接到 host/<tuple>/sysroot 就是上面说到的文件系统需要的库等目录,方便查看 | ||
+ | **<code>target: </code>目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。不能用来nfs mount到开发板,因为buildroot不是root权权运行的,所以现dev/,etc/等一些文件无法创建,所以目录还不完整,要用images/里的rootfs.tar解压出来的根文件目录才能mount.使用如下命令:<code>sudo tar -C /destination/of/extraction -xf images/rootfs.tar</code> | ||
+ | **<code>Images:</code>目录下就是最终生成的可烧写到板子上的各种image。 | ||
+ | **<code>host:</code>是由各类源码编译后在你主机上运行的工具(build for host)的安装目录,如arm-linux-gcc就是安装在这里;编译出来的主机工具在host/usr下;根目录所需要的库及一些基本目录就在<code>host/<tuple>/sysroot/</code>或<code>host/usr/<tuple>/sysroot/</code>里 (<tuple>:arm-buildroot-linux-gnueabi),如果是外部toolchain,比如lirano的就在libc里,名字不一样而已 | ||
+ | *<code>buildroot/dl:</code>存放下载的源码包及应用软件的压缩包 | ||
+ | *<code>buildroot/fs:</code>放各种文件系统的源代码 | ||
+ | *<code>buildroot/fs/skeleton:</code>放生成文件系统镜像的地方,及板子里面的系统 | ||
+ | *<code>buildroot/linux:</code>存放着Linux kernel的自动构建脚本。 | ||
+ | *<code>buildroot/configs:</code>放置开发板的一些配置参数 | ||
+ | *<code>buildroot/dl:</code>目录存放从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。本身下载通常都是很慢的,你可以手动找到相关包下载后放到这里就OK了,make时会自动检测这个目录. | ||
+ | *<code>buildroot/docs:</code>存放相关的参考文档。 | ||
+ | *<code>buildroot/arch:</code>目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。 | ||
+ | *<code>buildroot/board:</code>存放了一些默认开发板的配置补丁之类的 | ||
+ | *<code>buildroot/boot:</code> | ||
+ | *<code>buildroot/build:</code> | ||
+ | *<code>buildroot/support:</code> | ||
+ | *<code>buildroot/system:</code>这里就是根目录的主要骨架了和相关的启动初始化配置,当制作根目录时就是将此处的文件cp到output里去.然后再安装toolchain的动态库和你勾选的package的可执行文件之类的. | ||
+ | *<code>buildroot/toolchain:</code> | ||
+ | |||
+ | =buidroot常用命令= | ||
+ | ==Linux内核操作的常用命令== | ||
+ | *buildroot下单独编译内核 | ||
+ | book@100ask:~/Buildroot$ make linux-rebuild | ||
+ | *运行内核make menuconfig配置选项界面 | ||
+ | book@100ask:~/Buildroot$ make linux-menuconfig | ||
+ | *保存内核最新的配置文件 | ||
+ | book@100ask:~/Buildroot$ make linux-savedefconfig | ||
+ | *更新内核配置文件 | ||
+ | book@100ask:~/Buildroot$ make linux-update-defconfig | ||
+ | |||
+ | ==其它常用操作== | ||
+ | *buildroot下编译生成sdk | ||
+ | book@100ask:~/Buildroot$ make sdk | ||
+ | *buildroot下编译时显示详细信息 | ||
+ | book@100ask:~/Buildroot$ make V=1 <pkg> | ||
+ | *buildroot下编译时显示详细信息 | ||
+ | book@100ask:~/Buildroot$ make V=1 <pkg> | ||
+ | *buildroot下单独编译u-boot | ||
+ | book@100ask:~/Buildroot$ make uboot-rebuild | ||
+ | *buildroot下单独编译某个软件包 | ||
+ | book@100ask:~/Buildroot$ make <pkg>-rebuild | ||
+ | |||
+ | =buildroot高级操作= | ||
+ | *[[How to add a new package to buildroot | 如何添加一个自己的包到buildroot]] | ||
+ | *[[Buildroot_TargetOptions | 如何配置TargetOptions(目标架构选择) ]] | ||
+ | *[[Buildroot_BuildOptions| 如何配置buildroot构建选项]] | ||
+ | *[[Buildroot_Toolchain | 如何为目标单板配置工具链]] | ||
+ | *[[Buildroot_SystemConfiguration | 如何为目标单板配置系统配置参数]] | ||
+ | *[[Buildroot_Kernel |如何为目标单板安装内核镜像]] | ||
+ | *[[Buildroot_TargetPackages | 如何安装相应的软件包到目标单板内]] | ||
+ | *[[Buildroot_Bootloaders | 如何为目标单板安装uboot]] | ||
+ | *[[Buildroot_FilesystemImages | 如何为目标单板生成指定的文件系统镜像]] | ||
+ | |||
+ | =参考= | ||
+ | * https://hceng.cn/2019/09/05/Buildroot%E7%AC%94%E8%AE%B0/#more | ||
+ | * https://www.cnblogs.com/kele-dad/p/8231434.html | ||
+ | * https://blog.csdn.net/zhou_chenz/article/category/6019071 | ||
+ | * http://www.crifan.com/files/doc/docbook/buildroot_intro/release/html/buildroot_intro.html | ||
+ | * https://buildroot.org/ | ||
[[Category:rootfs]] | [[Category:rootfs]] | ||
+ | [[Special:RecentChanges | Special:RecentChanges]] |
2020年8月26日 (三) 16:32的最新版本
目录
buildroot简介
- Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。
- 你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。
- 如何使用make menuconfig 请参考Menuconfig_or_how_to_configure_kernel
- 官网使用手册 https://buildroot.org/downloads/manual/manual.html
buildroot功能详解
- 目标单板架构配置。
- 主要是一些编译时用到的选项,比如dl的路径,下载代码包使用的路径,同时运行多个编译的上限,是否使能编译器缓冲区等等,这里按照默认就行了.
- 此页面主要介绍如何使用buildroot配置内部交叉编译工具链,以及外部交叉编译工具链,还有如何添加自己的交叉编译工具链!
- 此页主要涉及配置系统主机名,登陆欢迎信息root密码,以及构建系统镜像版本,根文件系统覆盖!
- 此页面主要介绍在线下载内核源码并自动编译集成到根文件系统的方法!
-
- 此页主要介绍目标开发板上使用的根文件系统所需要的软件包的添加方法,以及配置方法!
- 此页主要介绍buildtroot支持的音频和视频应用功能介绍以及如何配置使用
- 此页主要介绍buildtroot支持的压缩和解压应用简介以及如何配置使用
- 此页面主要介绍buildroot 调试、分析和基准测试应用的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的开发工具应用的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的文件系统和闪存实用程序的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的字体,游标,图标,声音和主题的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的游戏 以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的图形库和应用程序(图形/文本)的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的硬件处理应用/工具的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的编程语言和脚本的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的库的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的邮箱应用的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的一些杂项应用的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的网络应用程序的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 包管理 应用的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 Shell和程序 的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 系统工具 的简介以及如何配置使用。
- 此页面主要介绍buildroot支持在目标系统上的 文版编辑和浏览工具 的简介以及如何配置使用。
- 此页介绍如何使用buildroot自动根据系统分区生成相应的系统镜像!
- 此页主要介绍在线下载u-boot源码,编译并生成相应的镜像文件到指定位置!
目录结构
-
buildroot/package/:
下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in
和soft_name.mk
,其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。 -
buildroot/output/:
是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。-
build:
所有源码包解压出来的文件存放地和编译的发生地 -
staging:
软链接到 host/<tuple>/sysroot 就是上面说到的文件系统需要的库等目录,方便查看 -
target:
目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。不能用来nfs mount到开发板,因为buildroot不是root权权运行的,所以现dev/,etc/等一些文件无法创建,所以目录还不完整,要用images/里的rootfs.tar解压出来的根文件目录才能mount.使用如下命令:sudo tar -C /destination/of/extraction -xf images/rootfs.tar
-
Images:
目录下就是最终生成的可烧写到板子上的各种image。 -
host:
是由各类源码编译后在你主机上运行的工具(build for host)的安装目录,如arm-linux-gcc就是安装在这里;编译出来的主机工具在host/usr下;根目录所需要的库及一些基本目录就在host/<tuple>/sysroot/
或host/usr/<tuple>/sysroot/
里 (<tuple>:arm-buildroot-linux-gnueabi),如果是外部toolchain,比如lirano的就在libc里,名字不一样而已
-
-
buildroot/dl:
存放下载的源码包及应用软件的压缩包 -
buildroot/fs:
放各种文件系统的源代码 -
buildroot/fs/skeleton:
放生成文件系统镜像的地方,及板子里面的系统 -
buildroot/linux:
存放着Linux kernel的自动构建脚本。 -
buildroot/configs:
放置开发板的一些配置参数 -
buildroot/dl:
目录存放从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。本身下载通常都是很慢的,你可以手动找到相关包下载后放到这里就OK了,make时会自动检测这个目录. -
buildroot/docs:
存放相关的参考文档。 -
buildroot/arch:
目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。 -
buildroot/board:
存放了一些默认开发板的配置补丁之类的 buildroot/boot:
buildroot/build:
buildroot/support:
-
buildroot/system:
这里就是根目录的主要骨架了和相关的启动初始化配置,当制作根目录时就是将此处的文件cp到output里去.然后再安装toolchain的动态库和你勾选的package的可执行文件之类的. buildroot/toolchain:
buidroot常用命令
Linux内核操作的常用命令
- buildroot下单独编译内核
book@100ask:~/Buildroot$ make linux-rebuild
- 运行内核make menuconfig配置选项界面
book@100ask:~/Buildroot$ make linux-menuconfig
- 保存内核最新的配置文件
book@100ask:~/Buildroot$ make linux-savedefconfig
- 更新内核配置文件
book@100ask:~/Buildroot$ make linux-update-defconfig
其它常用操作
- buildroot下编译生成sdk
book@100ask:~/Buildroot$ make sdk
- buildroot下编译时显示详细信息
book@100ask:~/Buildroot$ make V=1 <pkg>
- buildroot下编译时显示详细信息
book@100ask:~/Buildroot$ make V=1 <pkg>
- buildroot下单独编译u-boot
book@100ask:~/Buildroot$ make uboot-rebuild
- buildroot下单独编译某个软件包
book@100ask:~/Buildroot$ make <pkg>-rebuild