当前位置: 首页 > news >正文

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

目录

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

引言

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


Buildroot 能做什么?

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

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

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

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

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

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

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 是一个完整的存储镜像文件,通常包含引导加载程序、内核镜像、设备树文件和根文件系统等。详情见 https://blog.csdn.net/wenhao_ir/article/details/145367399
  • emmc.img 烧写到开发板的eEMMC中之后整个嵌入式系统就能自动完整启动了。
    在这里插入图片描述

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

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

比如在博文 https://blog.csdn.net/wenhao_ir/article/details/145367198 中,我们就利用Buildroot将Qt的库集成到了Linux的内核中了,并且还生成了QtCreator构建工程时所需要的qmake。


7.总结

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

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

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

构建方法(使用方法)

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

①以下是我为了使用Qt开发进行的一次利用Buildboot构建的记录,通过这个记录就可以对Buildboot的使用过程有一个大致的了解。
https://blog.csdn.net/wenhao_ir/article/details/145367198

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

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

make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig

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

相关文章:

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

目录 引言**Buildroot 能做什么?****1. 生成交叉编译工具链(Toolchain)****2. 生成嵌入式 Linux 根文件系统(RootFS)****3. 编译 Linux 内核和设备树文件****4. 编译 Bootloader(U-Boot)****5. …...

JavaScript系列(61)--边缘计算应用开发详解

JavaScript边缘计算应用开发详解 🌐 今天,让我们深入探讨JavaScript的边缘计算应用开发。边缘计算是一种将计算和数据存储分布到更靠近数据源的位置的架构模式,它能够提供更低的延迟和更好的实时性能。 边缘计算基础架构 🌟 &am…...

【LeetCode】day15 142.环形链表II

142. 环形链表 II - 力扣(LeetCode) 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则…...

代理对象与目标对象

1. 定义:代理对象和目标对象 1.1 目标对象(Target Object) 目标对象是指 被增强的原始对象,即需要通过 AOP 切面(Aspect)增强功能的业务对象(原始类)。增强逻辑(Advice…...

【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

引言 我们之前了解了在不同场景下,Kubernetes中Pod之间的通信是如何路由的。 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信现在,我们来看看在集群中,Pod与服务之间的通信是如何…...

DNN(深度神经网络)近似 Lyapunov 函数

import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器(MLP 结构) class LyapunovNet(nn.Module):def __init__(self, input_dim…...

128陷阱

首先我们了解一下关于包装器类型 java是面向对象的语言,但基本类型并不是面向对象的,从而出现了包装器类型,并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型,它相当于将…...

PromptSource和LangChain哪个更好

目录 1. 设计目标与定位 PromptSource LangChain 2. 功能对比 3. 优缺点分析 PromptSource LangChain 4. 如何选择? 5. 总结 PromptSource 和 LangChain 是两个在自然语言处理(NLP)领域非常有用的工具,但它们的设计目标和…...

构成正方形的数量:算法深度剖析与实践

目录 引言算法核心概念 定义正方形的构成条件数据结构与输入形式算法数学原理 几何关系的数学表达坐标运算与判定逻辑Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂度优化思…...

Redis持久化-秒杀系统设计

在构建高性能、高可用的系统时,Redis 作为缓存和消息队列的角色越来越重要。在一些场景下,我们还需要将 Redis 的数据进行持久化,以确保数据的安全性和恢复能力。除此之外,秒杀系统也越来越成为电商、抢购等平台的核心功能之一。本…...

音视频入门基础:RTP专题(8)——使用Wireshark分析RTP

一、引言 通过Wireshark可以抓取RTP数据包,该软件可以从Wireshark Go Deep 下载。 二、通过Wireshark抓取RTP数据包 首先通过FFmpeg将一个媒体文件转推RTP,生成RTP流: ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp …...

OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化

爬虫与 OpenAI 模型结合,不仅能高效地抓取并分析海量数据,还能通过 NLP 技术生成洞察、摘要,极大提高业务效率。以下是一些实际工作中具有较高价值的应用案例: 1. 电商价格监控与智能分析 应用场景: 电商企业需要监控…...

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合,旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍: 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…...

解密企业安全密码:密钥管理服务如何重塑数据保护?

在数字化时代,数据是企业最宝贵的资产之一。然而,随着网络威胁的不断升级和数据泄露事件的频繁发生,如何保护企业数据的安全已成为每个组织面临的紧迫问题。传统的安全措施往往无法应对复杂的威胁环境,密钥管理服务作为企业信息安…...

基于keepalived+GTID半同步主从复制的高可用MySQL集群

文章目录 项目架构图项目名称项目环境项目描述ip地址规划项目步骤一.安装好8台全新的centos7.9的系统,关闭firewalld和selinux,配置每台主机的静态ip地址,设置每台主机对应的主机名。1、关闭firewalld2.关闭seLinux3.配置每台主机静态ip地址4…...

图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案

办公文档处理:在企业日常办公中,经常会遇到大量的扫描文档(如发票、合同、报表等)以图片或 PDF 格式存储。需要将这些文档中的特定区域信息(如发票金额、合同条款、报表数据等)提取出来,整理到 …...

Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…...

从零手写Spring IoC容器(二):bean的定义与注册

从零手写Spring IoC容器(二):bean的定义与注册 一. 回顾简单容器的不足之处 在第一章中,我们实现了一个最简单的 IoC 容器,但该版本存在诸多不足,例如: Bean 的管理方式过于简单,…...

《大模型面试宝典》(2025版) 发布了

基于去年我们写的《大模型面试宝典》(2024版)的基础上,我根据自己实践经验和星球小伙伴的面经分享总结推出《大模型面试宝典》(2025版),共计52w字。 与去年相比,内容增加了星球成员面试真题分享、大模型最新考试要点总结、DeepSeek 项目实战…...

AWS门店人流量数据分析项目的设计与实现

这是一个AWS的数据分析项目,关于快消公司门店手机各个门店进店人流量和各个产品柜台前逗留时间(利用IoT设备采集)和销售数据之间的统计分析,必须用到但不限于Amazon Kensis Data Stream,Spark Streaming,Sp…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...