yocto是个什么东东

news2025/3/14 1:51:05

yocto不是个什么东东

在我们了解Yocto项目是什么之前,让我们先了解一下它不是什么。

Yocto项目不是用于现有硬件的软件开发工具包(SDK),而是用于构建这样一个工具包。

Yocto项目不是可以部署到硬件上的系统二进制镜像,而是用于构建这样一个镜像。

Yocto项目不是可以用于在硬件上安装的Linux发行版,而是用于为资源受限的硬件构建一个定制的发行版。

yocto是个什么东东

Yocto项目是一个开源协作项目,旨在帮助开发人员为嵌入式产品创建定制的基于Linux的系统,而不受硬件架构的限制。该项目提供了一套灵活的工具和一个空间,嵌入式开发人员可以在全球范围内共享技术、软件堆栈、配置和最佳实践,这些可以用于为嵌入式设备创建定制的Linux镜像。

Yocto项目整合、维护和验证了三个关键的开发元素。

一套集成工具,可使嵌入式Linux开发取得成功,包括用于自动构建和测试的工具,用于板级支持和许可合规性的流程,以及用于定制Linux嵌入式操作系统的组件信息。

一个参考嵌入式发行版(称为Poky)。

与OpenEmbedded项目一同维护的OpenEmbedded构建系统。

poky是什么?

Poky(发音为Pock-ee)是一个参考嵌入式发行版和一个参考测试配置,其目的是:

提供一个基本的功能发行版,可用于演示如何定制发行版。

用于测试Yocto项目的组件,Poky用于验证Yocto项目。

作为用户下载Yocto项目的工具。Poky不是一个产品级别的发行版,而是一个很好的定制起点。Poky是在oe-core之上的一个集成层。

oe-core是什么?

oe-core或者OpenEmbedded-Core是一个由基础recipes、类别和相关文件组成的元数据,旨在在许多不同的OpenEmbedded衍生系统中通用,包括Yocto项目。它是OpenEmbedded社区原始存储库的筛选子集,已经经过精简,形成了一个经过持续验证的recipes,从而形成了一个严格控制和质量保证的核心recipes。

简而言之,oe-core是一个经过质量保证的核心基础recipes,Poky使用它来生成一个良好且可工作的基础Linux镜像。

recipe是什么?

recipe是最常见的元数据形式。一个recipe包含一个构建软件包的设置和任务(指令)列表,然后用于构建二进制镜像。一个recipe描述了从哪里获取源代码以及应用哪些补丁。recipe描述了库或其他recipe的依赖关系,以及配置和编译选项。

它们存储在层中。实际上,Poky的分层特性使其具有极高的可扩展性、多功能性,并且易于适应各种系统。例如,可以将与网络有关的所有recipe放在一个层中,将与对应的应用程序相关的所有recipe放在另一个层中,为图形子系统专门创建一个层,依此类推!

类似地,还有被称为配置文件的文件。这些文件包含全局变量的定义、用户定义的变量以及硬件配置信息。它们告诉构建系统在image中构建和放置什么,以支持特定的平台。

配置文件和recipe通常被称为Poky构建系统中的元数据。除了这些之外,用于使用recipe和配置文件构建图像的命令和数据也构成了元数据。

我们有oe-core,其中包含由经过验证的元数据形成的有效image。进而会想到对于这些recipe,怎么使之形成目标image呢?答案是借助BitBake。

Bitbake是什么?

BitBake是一个调度器和执行引擎,它解析指令(recipe)和配置数据。然后,它创建一个依赖树来排序编译,安排包含的代码的编译,最后执行构建指定的定制Linux镜像(发行版)。BitBake是一个类似于make的构建工具。BitBake recipe指定了如何构建特定软件包。它们包括所有软件包依赖项、源代码位置、配置、编译、构建、安装和删除指令。

在构建过程中,跟踪依赖关系并执行软件包的本地或交叉编译。在交叉构建设置的第一步中,框架将尝试创建一个适用于目标平台的交叉编译器工具链。

BitBake解析器确保顶层的层可以覆盖较低层中的设置,从而在解析器向下移动层时避免任何冲突!

BitBake引擎使用元数据来创建一个被称为软件包(packages)的构建输出。这些软件包组合在一起,形成了最终目标——最终镜像。

以下是Yocto项目组件的一个良好高层次表示:

Yocto 开发流程

首先,开发人员必须决定各种高级配置,比如要为哪个平台建镜像,构建所需的任何特殊配置数据,要构建的镜像类型等。

一旦配置就绪,接下来是源代码。源代码可以以tarballs的形式提取自项目发布,也可以从Git或SVN中提取,甚至可以在工作空间中本地添加。

通常,可能需要对源代码应用补丁,以定制软件组件以适应所需的机器或特定镜像。然后应用这些补丁。

对源代码进行构建。大多数常见的构建工具,如autotools、cmake等都受支持。BitBake负责进行必要的配置和编译。

构建过程输出,然后被放置到一个临时的分段区域,在这里进行打包,如.deb、.rpm、.ipk等。这个打包信息是在我们获取源代码之前在开始时指定的配置之一。

接下来是质量保证(QA)过程。尽管说这是QA发生的第一个阶段是不准确的——更准确地说,QA活动在整个过程中都发生——特别是在BitBake引擎的运行过程中。

一旦二进制软件包准备就绪,只需要创建一个适用于所请求镜像的软件包源。

这个软件包源最终形成了最终的镜像。Linux镜像并不是构建过程能够创建的全部。构建过程还可以选择生成一个SDK,该SDK可用于对应平台的开发和构建应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考高级:BPR 和 BPM概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

ubuntu下docker安装

目录 官网链接 安装步骤 docker使用方法 拉取镜像 创建镜像 运行镜像 查看运行结果 保存镜像文件 传输到windows下 官网链接 Install Docker Engine on Ubuntu | Docker Docs 安装步骤 1.运行以下命令卸载所有冲突的包: for pkg in docker.io docker-d…

mysql实战开发之 mysql 删除一张表某个字段的sql语句

有一张表, 我需要删除这张表其中的某一个或者某几个字段, 相信大家在日常开发中应该会遇到这种情况, 然后刚好自己接触的项目安装的mysql关闭了允许远程连接的设置, 也就是说不允许使用类似于navicat 等可视化工具连接, 那么就没办法通过可视化工具直接去通过鼠标操作就可以 完…

Android Studio实现内容丰富的安卓宠物医院管理系统

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号128 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.系统公告 3.宠物社区(可发布宠物帖子&#xf…

详细分析Java中Stream流和for循环的差异之处

目录 前言1. 基本知识2. Demo 前言 事情起因是遍历大数据的时候,数据卡顿很严重 对于Java的基本知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 1. 基本知识 在Java中,Stream API提供…

对模型性能进行评估(Machine Learning 研习十五)

在上一篇我们已然训练了一个用于对数字图像识别的模型,但我们目前还不知道该模型在识别数字图像效率如何?所以,本文将对该模型进行评估。 使用交叉验证衡量准确性 评估模型的一个好方法是使用交叉验证,让我们使用cross_val_score…

emment语法

文章目录 1. 生成普通的标签2. 生成 div类名3. 生成指定标签类名/id 值4. 生成带有子元素的标签5. 生成内部文本6. 一次可以生成多个标签7. 生成带有指定属性 的元素8. 生成相邻兄弟元素 1. 生成普通的标签 本质使用的就是元素选择器,例如 div p a 标签等等。 2. …

绝地求生:PUBG 2024年 更新重点偏向于武器平衡、游戏互动及联名道具

一、游戏体验 1. 增加可破坏的环境 1.1 增加更多互动功能 通过可破坏环境将游戏方式变得千变万化。待功能上线,在后续游戏中玩家可以对建筑物进行部分破坏来开辟新的进攻、撤退路线,或搭建掩体进行战略性攻击。 环境破坏部分功能,将会在4…

uniapp无感登录封装

全局请求封装 https://blog.csdn.net/qq_42618566/article/details/109308690 无感登录封装 import {http} from "./index.js" let requestsQueue []; // 请求队列// 记录请求队列 export function recordRequests(path, params, loading, method) {requestsQueu…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 编写不易,有用的朋友点个赞或加粉一下万分感…

详解命令docker run -d --name container_name -e TZ=Asia/Shanghai your_image

docker run 是Docker的主要命令,用于从镜像启动一个新的容器。下面详细解释并举例说明 -d, --name, -e TZ 参数的用法: -d 或 --detach: 这个标志告诉Docker以守护进程(后台)模式运行容器。这意味着当你执行 docker ru…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《适应分布式资源渗透率提高的配电网网元规划方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextArea)

多行文本输入框组件,当输入的文本内容超过组件宽度时会自动换行显示。 高度未设置时,组件无默认高度,自适应内容高度。宽度未设置时,默认撑满最大宽度。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容&…

【Java设计模式】二十三、解释器模式

文章目录 1、解释器模式2、案例 1、解释器模式 计算一个表达式的值,比如12-34-7,单纯的定义方法或函数很难适配所有,因为数值和运算符可以有无数种组合。 //用于n个整数相加 public static int add(Integer ... arr) {int sum 0;for (Inte…

【spring】@PropertySource 注解学习

PropertySource介绍 PropertySource是Spring框架中的一个注解,主要用于Java配置类中,用于引入额外的属性文件,以便在Spring应用上下文中使用这些属性。 在Spring 3.1引入Java配置后,我们可以通过Configuration注解的类和Bean注解…

数据结构之链式二叉树

当我们初步了解二叉树后 我们就可以进一步去深入学习二叉树了 1.链式二叉树的遍历 这里我们先去定义链式二叉树的结构 分为两个指针 一左一右 他们分别指向左子树和右子树 typedef int BTDataType;typedef struct BinaryTreeNode {BTDataType data;struct BinartTreeNod…

气液分离器的选型介绍

气液分离器在热泵或制冷系统中的基本作用是分离出并保存回气管里的液体以防止压缩机液击。因此,它可以暂时储存多余的制冷剂液体,并且也防止了多余制冷剂流到压缩机曲轴箱造成油的稀释。因为在分离过程中,冷冻油也会被分离出来并积存在底部,所以在气液分离器出口管和底部会…

Mybatis的简介和实现增删改查

第一章:框架的概述 JDBC存在的问题 我们要想研究mybatis就必须知道jdbc所存在的问题,那我那么我们首先来复习一下jdbc操作数据库的大致流程。 1.加载数据库驱动 2.创建并获取数据库连接对象connection 3.通过连接对象获取会话对象statement 4.编写sql…

Docker 系列2【docker安装mysql】【开启远程连接】

文章目录 前言开始步骤1.增加mysql挂载目录2.下载镜像2.启动容器具体步骤4.无法连接5.测试连接 总结 前言 本文开始,默认已经安装docker,如果你还没有完成这个步骤,请查看这一篇文章【docker安装与使用】 开始步骤 1.增加mysql挂载目录 m…

考研模拟面试-答案【攻略】

考研模拟面试-答案【攻略】 前言版权推荐考研模拟面试-答案前面的问题通用问题专业题数据结构计算机网络操作系统数据库网络安全 手写题数据结构操作系统计算机网络 代码题基础代码题其他代码题 后面的问题补充题目 基础代码题答案链栈循环队列1循环队列2哈希表 最后 前言 202…