首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

嵌入式开发神器:Buildroot的介绍和使用方法

  • 25-03-05 02:42
  • 4609
  • 7951
blog.csdn.net

目录

  • 引言
  • **Buildroot 能做什么?**
    • **1. 生成交叉编译工具链(Toolchain)**
    • **2. 生成嵌入式 Linux 根文件系统(RootFS)**
    • **3. 编译 Linux 内核和设备树文件**
    • **4. 编译 Bootloader(U-Boot)**
    • **5. 编译生成eEMMC启动所需的img文件**
    • **6. 编译用户空间应用程序**
    • **7.总结**
  • Buildroot的增量构建机制(第1次构建花时间,后面花的时间就很少了)
  • 构建方法(使用方法)
    • 第1个使用示例(简单使用)
    • 第2个使用示例(完整使用)

引言

Buildroot 非常强大,它不仅仅是一个 构建嵌入式 Linux 根文件系统(rootfs) 的工具,更是一个 完整的嵌入式开发环境构建工具!它可以 自动构建所有开发所需的工具链、库、应用程序和环境,大大降低嵌入式开发的难度。


Buildroot 能做什么?

1. 生成交叉编译工具链(Toolchain)

  • 自动编译生成 GCC 交叉编译工具链
  • 自动编译 binutils、glibc/uClibc/musl
  • 生成 sysroot 目录,包含目标系统的头文件和库文件,关于 sysroot 目录的详细介绍见 http://iyenn.com/rec/1709248.html
  • 支持预编译工具链(如 Linaro、Sourcery CodeBench),如果不想自己编译 GCC,也可以直接用外部工具链

以下是我利用Buildroot生成的交叉编译工具链以及交叉编译工具链里的 sysroot 目录的截图:
使用Buildroot构建嵌入式开发环境时,Buildroot 会编译生成交叉工具链,显然在编译生成交叉工具链时会一并生成 sysroot 目录。
在这里插入图片描述
上面这张截图的目录路径如下:

/home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/host
  • 1

在这里插入图片描述
上面这张截图的目录路径如下:

/home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x/output/host/arm-buildroot-linux-gnueabihf
  • 1

2. 生成嵌入式 Linux 根文件系统(RootFS)

  • 自动构建 rootfs(根文件系统)
  • 支持 BusyBox 作为轻量级用户空间
  • 可选 glibc / uClibc / musl 作为 C 库
  • 支持各种文件系统格式(ext4、squashfs、cpio 等)
    在这里插入图片描述

3. 编译 Linux 内核和设备树文件

  • 自动下载和编译 Linux 内核
  • 支持自定义 Kernel 配置(类似 make menuconfig)
  • 支持编译 Device Tree(DTS)
    在这里插入图片描述

4. 编译 Bootloader(U-Boot)

  • 自动编译 U-Boot
  • 可配置不同的启动参数
  • 支持不同架构的 Bootloader(如 ARM、MIPS、RISC-V)
    在这里插入图片描述

5. 编译生成eEMMC启动所需的img文件

  • emmc.img 是一个完整的存储镜像文件,通常包含引导加载程序、内核镜像、设备树文件和根文件系统等。详情见 http://iyenn.com/rec/1709263.html
  • 把emmc.img 烧写到开发板的eEMMC中之后整个嵌入式系统就能自动完整启动了。
    在这里插入图片描述

6. 编译用户空间应用程序

  • 提供大量开源软件包(如 Qt、Python、BusyBox、Dropbear SSH 等)
  • 支持 make menuconfig 选择需要的应用
  • 支持定制自己的软件包

比如在博文 http://iyenn.com/rec/1709264.html 中,我们就利用Buildroot将Qt的库集成到了Linux的内核中了,并且还生成了QtCreator构建工程时所需要的qmake。


7.总结

? Buildroot ≠ 只是一个 RootFS 构建工具,它还是:

  • 嵌入式 Linux 交叉编译工具链的自动构建工具
  • Linux Kernel 和 U-Boot 的构建工具
  • 用户空间应用和库的编译管理工具
  • 一键生成完整嵌入式系统环境

它可以帮助你 从零快速构建一个可运行的嵌入式 Linux 系统,包括 工具链、内核、根文件系统、驱动、应用,极大地提升开发效率!?

Buildroot的增量构建机制(第1次构建花时间,后面花的时间就很少了)

问:假如我已经编译成功了一次Buildroot,然后我只修改了Buildroot的U-Boot部分,那还会像第一次编译那样花费七、八个小时吗?
答:不会的。Buildroot 采用的是增量构建机制,如果你只修改了 U-Boot 部分,它不会重新编译整个系统,而只会重新编译 U-Boot 及其相关的依赖项。

一般情况下,Buildroot 编译 U-Boot 的过程包括:

  1. 下载 U-Boot 源码(如果之前已下载,则不会重复下载)。
  2. 解压源码(如果之前已解压,可能会跳过)。
  3. 进行 U-Boot 配置(如 make menuconfig)。
  4. 编译 U-Boot(这部分会重新执行)。
  5. 复制 U-Boot 相关文件到输出目录。

通常,重新编译 U-Boot 只需要几分钟,而不会像第一次编译那样耗时几个小时。

但要注意:

  • 如果你执行了 make clean 或 make distclean,那么 Buildroot 可能会删除之前的构建成果,从而导致重新编译所有组件,这样会花费更长的时间。
  • 如果你改动的 U-Boot 配置影响了其他组件(比如设备树、启动方式等),可能会触发相关组件的重新编译,但依然不会像初次编译那么久。

如果你只想重新编译 U-Boot,可以使用:

make uboot-rebuild
  • 1

或者:

make uboot-dirclean
make uboot
  • 1
  • 2

这样能最大程度地减少编译时间。

构建方法(使用方法)

第1个使用示例(简单使用)

①以下是我为了使用Qt开发进行的一次利用Buildboot构建的记录,通过这个记录就可以对Buildboot的使用过程有一个大致的了解。
http://iyenn.com/rec/1709264.html

第2个使用示例(完整使用)

②我准备后面从零开始利用Buildroot完整的构建一次自己在嵌入式开发过程中需要的各种东西。从博文 http://iyenn.com/rec/1709264.html 中可以知道,Buildroot的配置文件100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig应该是一个关键点,可以以此为突破口。相关命令如下:

make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig
  • 1

后面把博文写完后再把链接加到这里。

昊虹嵌入式技术交流群
QQ群名片
注:本文转载自blog.csdn.net的昊虹AI笔记的文章"https://blog.csdn.net/wenhao_ir/article/details/145470042"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top