构建linux系统的强有力工具buildroot

目录

01. buildroot简介

1.1简介

1.2 源码下载

1.3 buildroot版本更新介绍

02. 实操演示

2.1 buildroot源码目录层级的简介

2.2 实操演示

03. 结语


01. buildroot简介


1.1简介

Buildroot是一个嵌入式Linux系统的工具链,它用于构建嵌入式设备的根文件系统。Buildroot能够从源代码自动构建整个嵌入式Linux系统,包括内核、库、驱动程序和应用程序等。

Buildroot具有以下特点:

  1. 自动化:Buildroot可以根据配置文件自动完成构建过程,包括下载源代码,构建交叉编译工具链,编译内核和文件系统等。
  2. 灵活性:用户可以通过配置文件自定义构建过程,选择所需的软件包和选项,以及对构建系统进行定制化的配置。
  3. 轻量级:Buildroot致力于生成精简的根文件系统,适用于资源有限的嵌入式设备。
  4. 社区支持:Buildroot有一个活跃的社区,提供文档、邮件列表和IRC等支持渠道,以及经验分享和开源项目。

总的来说,Buildroot是一个功能强大且灵活的工具,可以帮助开发人员快速构建定制的嵌入式Linux系统,适用于各种嵌入式设备和嵌入式应用。

题外话:

        嵌入式系统发移植指将一个计算机系统或者平台软件移植到特定的硬件平台的过程, 在这一过程中需要做很多适配工作。

1.2 源码下载

https://buildroot.org/

点击有右上角的DOWNLOAD加入下载界面

也可以点击图中的位置, 去往列表处查看更多版本的buildroot, 选择适配你自己的。

1.3 buildroot版本更新介绍

02. 实操演示


2.1 buildroot源码目录层级的简介

第一步:将下载的buildroot源码移动到linux目录下面去, 可以受用共享目录, 也可以直接拖, 或则创建一个网络共享目录。

tar -vxf buildroot-2023.11.tar.xz
cd buildroot-2023.11

第二步: 进入buildroot的源码目录下之后

第三步: 查看buildroot的makefile中支持的指令  make help

重点我们关注configuration的部分, 可以看到buildroot支持很多种图形化界面的配置, 基于ncurses库的, Qt的等等。

题外话:接下来我们执行的nake menucinfig进入的图型化的配置界面本质就是在修改源码目录下的各个目录中的配置文件, 所以我们也可以直接修改配置文件, 最后再编译, 但是不推荐这样,难度大且没意义。那我们为什么要修改配置文件呢?原因就是我们要指定一个硬件平台, cpu的架构, 网卡的型号, bootloader用哪一种, 文件系统使用哪一种格式, 设备树, 构建好linux系统之后我们要使用拿一些软件支持包或者库等等都需要我们选择。

2.2 实操演示

第一步: 在buildroot的源码的顶层目录下执行

make menuconfig

方向键控制方向, 空格和Y或N控制item的选择, 上面的英文就是解释。

接着进入各个目录下面选择与我们的需求适配的选项, 退出的时候选择保存, 接着执行make, 编译。

补充:

        

图中圈住的位置是在Linux中我们需要的一些包, 进入该目录结构下我们可以看到

在这里就是我们需要在linux中安装的一些库, 在这里选中之后就不需要我们在配置好linux之后再去一个一个的装这些库, 依赖啥的, 在这里一步到位, 是不是特别方便。

最后, 当我们在menuconfig中配置好我们需要的功能之后, 进入buildroot顶层目录下的config目录下

cd config

接着咱们就可以看到许许多多的官方评估版, 咱们执行选择一块, 这里我就选择stm32mp157a_dk1_defconfig,回到顶层目录

make stm32mp157a_dk1_defconfig

这样就把咱们使用的board的名字写入当前目录下的.config文件中了, 该文件是一个文件以.开头对吧, 用这个命令可以看到该文件

ls -a

在这呢, 对吧

接着我们在顶层目录下执行

make

就可以看到程序工具我们配置好的.config文件进行编译和配置linux内核啦, 接着静静的等待就可以了



03. 结语

好了, 这里本篇文章关于buildroot的分享也就结束了, 希望让大家对buildroot有一个大致和系统的认识, 注意, 这里只是对buildroot工具进行看一个简介, 需要深入了解的家人们可以在buildroot的官网看看官方提供的一些文档和自己配置一个linux系统试试看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263930.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes里的DNS;API资源对象ingress;Kubernetes调度;节点选择器NodeSelector;节点亲和性NodeAffinity

Kubernetes里的DNS K8s集群内有一个DNS服务: kubectl get svc -n kube-system |grep dns测试: 在tang3上安装bind-utils,目的是安装dig命令 yum install -y bind-utils apt install dnsutils #ubuntu上 解析外网域名 dig 10.15.0.10 www.baidu.com…

模型 心流

本系列文章 主要是 分享模型,涉及各个领域,重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹(Michael Jordan):篮球之神乔丹在比赛中经常进入心流状态,他曾表示&#xff…

第四节JavaScript 条件语句、循环语句、break与continue语句

一、JavaScript条件语句 在通常的代码中,我们有一些需要决定执行不同动作,这就可以在代码中使用条件语句来完成。 下面是我们常使用的条件语句: if语句:只有当指定条件是true时,执行条件内代码。if…else语句&#…

Linux下C++动态链接库的生成以及使用

目录 一.前言二.生成动态链接库三.使用动态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C动态链接库&#xff08;.so文件&#xff09;。 二.生成动态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&…

【深度学习】强化学习(四)强化学习的值函数

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数1. 状态值函数&#xff08;State Value Function&#xff09;a. 状态值函数的定义b. 贝尔曼方程&#xff08;Bellman Eq…

class069 从递归入手三维动态规划【算法】

class069 从递归入手三维动态规划 code1 474. 一和零 // 一和零(多维费用背包) // 给你一个二进制字符串数组 strs 和两个整数 m 和 n // 请你找出并返回 strs 的最大子集的长度 // 该子集中 最多 有 m 个 0 和 n 个 1 // 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是…

深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结

前面在深入理解kafka中提到的只是理论上的设计原理&#xff0c; 本篇讲得是基于c语言的kafka库的程序编写&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 首先要编写生产者的代码&#xff0c;得先知道生产者的逻辑在代码上是怎么体现的 1.kafka生产者的逻辑 …

深度学习——第4.1章 深度学习的数学基础

第4章 深度学习的数学基础 目录 4.1 向量 4.2 求和符号 4.3 累乘符号 4.4 导数 4.5 偏导数 4.6 矩阵 4.7 指数函数和对数函数 注意&#xff1a;4.6和4.7位于4.2章 第4章 深度学习的数学基础 本章总结一下机器学习所需的数学知识&#xff0c;同时介绍如何在Python中使用…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

【Android12】Android Framework系列--AMS启动Activity分析

AMS启动Activity分析 通过ActivityManagerService(AMS)提供的方法&#xff0c;可以启动指定的Activity。比如Launcher中点击应用图标后&#xff0c;调用AMS的startActivity函数启动应用。 AMS提供的服务通过IActivityManager.aidl文件定义。 // frameworks/base/core/java/an…

mysql数据库文件丢失恢复---惜分飞

客户服务器重启,mysql相关数据文件丢失 通过底层工具进行分析,无法正确恢复数据库名字,一个个单个ibd文件(而且很多本身是错误的) 对于这种情况,通过mysql block扫描恢复出来page文件 恢复出来客户需要数据 这个客户出现该故障的原因大概率是由于文件系统损坏导致.最终…

[ 蓝桥杯Web真题 ]-布局切换

目录 介绍 准备 目标 规定 思路 解法参考 介绍 经常用手机购物的同学或许见过这种功能&#xff0c;在浏览商品列表的时候&#xff0c;我们通过点击一个小小的按钮图标&#xff0c;就能快速将数据列表在大图&#xff08;通常是两列&#xff09;和列表两种布局间来回切换。…