Yocto项目实战教程 · 第4章:4.1小节元数据

🔍

B站相应的视频教程
📌 Yocto项目实战教程-第4章-4.1小节-元数据
记得三连,标为原始粉丝。



在嵌入式Linux系统构建中,Yocto项目凭借其高度模块化、可配置的特性成为主流工具。而其背后的关键支撑之一,便是“元数据(Metadata)”。元数据不仅定义了整个构建系统的行为,更是构建过程的灵魂所在。

本章将围绕元数据的概念、文件类型、语法机制和共享策略,逐步揭示Yocto项目中这一核心机制的运行逻辑。


4.1 元数据:构建系统的核心语言

在这里插入图片描述

4.1.1 元数据的起源与演进

元数据,顾名思义,是“描述数据的数据”。这一术语源自希腊词根“meta-”,表示“超越”。在计算机领域中,它广泛用于定义数据结构、描述属性和支持流程自动化。

Yocto项目于2010年启动,基于OpenEmbedded构建系统,进一步规范和扩展了元数据体系,采用 BitBake 作为构建引擎,形成了当前稳定、高效的分层构建架构。


4.1.2 元数据文件类型

Yocto项目中的元数据文件主要包括以下五类:

  • .bb:菜谱文件
  • .bbappend:追加菜谱
  • .conf:配置文件
  • .bbclass:类文件
  • .inc:包含文件

这些文件共同构成了构建流程中的核心规则集合。


4.1.2.1 菜谱与追加菜谱文件

菜谱文件(.bb)是定义软件包构建逻辑的核心文件,内容包括:

  • 源码来源(SRC_URI)
  • 编译配置(EXTRA_OECONF)
  • 构建任务(do_compile/do_install)
  • 构建依赖(DEPENDS)

追加菜谱文件(.bbappend)用于在不修改原始菜谱的情况下进行功能拓展或定制化修改,例如添加补丁、调整任务顺序等。追加文件必须与原始菜谱同名,才能被自动关联生效。


4.1.2.2 配置文件

配置文件(.conf)用于设置全局或局部构建参数。按作用范围分为:

构建系统中的配置文件:

  • bitbake.conf:BitBake核心配置
  • layer.conf:元数据层配置
  • <machine>.conf:机器配置
  • <distro>.conf:发行版配置

构建环境中的配置文件(位于 build/conf):

  • bblayers.conf:启用的元数据层路径
  • local.conf:本地构建参数(如MACHINE、DISTRO)

这些配置文件通过赋值语法(如 ?==)组合形成最终的构建变量集合。


4.1.2.3 类文件(.bbclass

类文件用于封装可复用构建逻辑,常见类文件包括:

类文件名称功能说明
base.bbclass所有菜谱隐式继承的基础功能
image.bbclass定义镜像生成规则
autotools.bbclass支持Autotools构建系统
cmake.bbclass适配CMake构建流程
core-image.bbclass提供核心镜像支持功能

类文件通过 inherit 指令被菜谱继承,在 meta/classes 等目录中可找到。


4.1.2.4 包含文件(.inc

包含文件类似类文件,但以 include 或 require 的方式加载,用于轻量级的变量共享、任务复用。与类文件不同,它并不隐式提供类结构,适合配置切片的组织。

例如:

include gdb.inc

若文件缺失:

  • include 会记录警告但继续构建
  • require 会中止构建并抛出错误

4.1.3 元数据语法详解

BitBake使用一套灵活的语法系统解析元数据,以下为常用语法要点。


4.1.3.1 注释

注释以 # 开头,不参与执行:

# 这是变量的注释说明
SRC_URI = "https://example.com"

4.1.3.2 变量定义与操作符

元数据变量为字符串类型,保存在BitBake数据字典中,常用操作符如下:

操作符名称作用
=直接赋值设置变量值,覆盖所有定义
?=默认赋值仅在未定义时赋值
??=弱默认赋值优先级最低,仅作兜底
+=非覆盖式追加在末尾添加,自动加空格
.=追加(无空格)字符串拼接
:append覆盖式追加延迟扩展时生效
:prepend覆盖式前置延迟扩展
:remove移除指定值在变量扩展时生效

4.1.3.3 变量扩展机制

  • 立即扩展 :=:在赋值时解析引用变量
  • 延迟扩展 =:使用时解析变量
  • 键名扩展 ${}:动态构造变量名

示例:

A = "123"
B := "Value is ${A}"  # 立即扩展为 Value is 123

4.1.3.4 条件语法与OVERRIDES

BitBake支持条件变量定义,用于特定环境下的变量重定义。

OVERRIDES = "machine:local"
DEPENDS:append:machine = " libmad"

BitBake会选择满足 OVERRIDES 的条件版本。


4.1.3.5 变量标志(Variable Flags)

用于对变量附加属性:

SRC_URI[sha256sum] = "abcdef..."

也可通过 Python 获取:

python () {val = d.getVarFlag("SRC_URI", "sha256sum")bb.note("SHA256: %s" % val)
}

常用任务控制标志:

标志名用途
[cleandirs]任务前清空目录
[depends]构建依赖关系
[dirs]创建工作目录
[network]启用网络访问
[prefuncs/postfuncs]前后处理函数

4.1.3.6 指令共享机制

BitBake支持以下元数据共享机制:

指令说明
include引入 .inc 文件,文件可缺失
require强制引入,不可缺失
inherit继承 .bbclass 类文件
INHERIT配置文件中设置全局继承类
BBPATH类文件搜索路径变量

示例:

inherit autotools
INHERIT += "autotools"

小结

在Yocto项目中,元数据不仅是构建系统的“语言”,更是实现自动化、模块化构建的核心机制。通过掌握 .bb.conf.bbclass 等多种元数据文件,以及 =、?=、:append、inherit 等语法规则,开发者可以构建高效、可维护、可移植的嵌入式Linux系统。


B站相应的视频教程
📌 Yocto项目实战教程-第4章-4.1小节-元数据
记得三连,标为原始粉丝。


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

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

相关文章

《AI大模型应知应会100篇》第23篇:角色扮演技巧:让AI成为你需要的专家

第23篇&#xff1a;角色扮演技巧&#xff1a;让AI成为你需要的专家 摘要 在当今人工智能快速发展的时代&#xff0c;大模型已经不仅仅是简单的问答工具&#xff0c;它们可以通过角色扮演技巧模拟各类专家身份&#xff0c;从而为用户提供更专业、更有针对性的服务。本文将深入探…

Windows系统安装RustDesk Server的详细步骤和客户端设置

Windows系统安装RustDesk Server的详细步骤 在Windows系统上安装RustDesk Server涉及几个关键步骤,包括安装必要的依赖、下载RustDesk Server程序、配置并启动服务。以下是详细的步骤: 1. 安装Node.js和PM2 RustDesk Server的某些版本可能需要Node.js环境来运行,而PM2是一…

如何实现一个构造函数继承另一个构造函数的属性和方法?给出ES5和ES6两种方式

在 JavaScript 中&#xff0c;构造函数继承可以通过 原型链 和 构造函数调用 实现。以下是 ES5 和 ES6 的实现方式&#xff1a; ES5 实现方式 关键步骤 继承实例属性&#xff1a;在子构造函数中调用父构造函数的 call/apply&#xff0c;绑定 this。继承原型方法&#xff1a;将…

AWS Redshift的使用场景及一些常见问题

Redshift 不是关系型数据库, 提供了Amazon Redshift Serverless 和 Amazon Redshift 都是构建于 Redshift 数仓引擎之上的&#xff0c;但它们适用的场景不同。Redshift和Dynamodb都可以存储数据, 分别怎么选择? 这里记录一些常见的问题和场景。 1. 如何选择用Amazon Redshift…

十五种光电器件综合对比——《器件手册--光电器件》

十五、光电器件 名称 原理 特点 应用 发光二极管&#xff08;LED&#xff09; 基于半导体材料的电致发光效应&#xff0c;当电流通过时&#xff0c;电子与空穴复合&#xff0c;释放出光子。 高效、节能、寿命长、响应速度快、体积小。 广泛用于指示灯、照明、显示&#…

Electricity Market Optimization(VI) - 机组组合模型以及 Gurobi 求解

本文参考链接&#xff1a;link \hspace{1.6em} 机组组合问题在电力系统中非常重要&#xff0c;这个问题也是一个优化问题&#xff0c;研究的就是如何调度现有的机组&#xff0c;调度的对象是以煤炭、石油、天然气为燃料的火力发电机以及水力发电机等可预测处理的发电机组&#…

linux多线(进)程编程——(8)多进程的冲突问题

前言 随着时间的推移&#xff0c;共享内存已经在修真界已经沦为禁术。因为使用这种方式沟通的两人往往会陷入到走火入魔的状态&#xff0c;思维扭曲。进程君父子见到这种情况&#xff0c;连忙开始专研起来&#xff0c;终于它们发现了共享内存存在的问题&#xff1a; 进程间冲…

网络层IP协议知识大梳理

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的IP协议笔记吧~ 自己写自己的八股&#xff01;让未来的自己看懂&#xff01; &#xff08;全文手敲&#xff0c;受益良多&#xff09; 网路基础3 网路层 TCP并没有把数据发到网路…

数据结构与算法学习导航

目录 指导思想资料总结代码随想录hello-algoOI-WIKI 一名麻瓜的刷leetcode的简单概述。 在这里对过去的自己说: 如果你相信算法有用你就刷刷leetcode&#xff0c;如果不相信面试会让你相信。 当然&#xff0c;现在我确实认为算法和数据结构有用&#xff0c;leetcode也有用。 …

【网络安全】谁入侵了我的调制解调器?(二)

文章目录 针对 TR-069 协议 REST API 的攻击思路攻击百万台调制解调器意外发现 Cox 后端 API 的授权绕过漏洞确认我们能够进入任何人的设备访问和更新任何Cox商业客户账户通过泄露的加密密钥覆盖任何人的设备设置执行对任何调制解调器的命令影响最后想说阅读本文前,请先行浏览…

大模型在急性单纯性阑尾炎预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 研究方法与创新点 二、急性单纯性阑尾炎概述 2.1 定义与发病机制 2.2 临床表现 2.3 传统诊断方法 三、大模型在急性单纯性阑尾炎预测中的应用 3.1 大模型简介 3.2 数据收集与处理 3.3 模型训练与优化 3.4 预测…

Linux 上安装和配置 VNC 远程桌面

在 Linux 上安装和配置 VNC&#xff08;Virtual Network Computing&#xff09;可以让你远程访问图形化桌面环境。以下是详细的安装和配置步骤&#xff0c;适用于主流 Linux 发行版&#xff08;如 Ubuntu、CentOS、Debian 等&#xff09;。 1. 安装 VNC 服务器 Ubuntu/Debian …

《AI大模型应知应会100篇》第22篇:系统提示词(System Prompt)设计与优化

第22篇&#xff1a;系统提示词(System Prompt)设计与优化 摘要 在大语言模型&#xff08;LLM&#xff09;应用中&#xff0c;系统提示词&#xff08;System Prompt&#xff09;是控制模型行为的核心工具之一。它不仅定义了模型的身份、角色和行为规范&#xff0c;还直接影响输…

其他网页正常进入,但是CSDN进入之后排版混乱

显示不正常&#xff0c;排版混乱 解决方法&#xff1a; ①打开网络设置 ②更改适配器 ③所连接的网络 --右键 属性 然后就可以正常访问了。

Qwen2.5-VL视觉大语言模型复现过程,没碰到什么坑

视频讲解&#xff1a;Qwen2.5-VL视觉大语言模型复现过程&#xff0c;没碰到什么坑_哔哩哔哩_bilibili Qwen2.5-VL视觉大语言模型复现过程&#xff0c;没碰到什么坑 今天复现下Qwen2.5-VL玩玩 https://github.com/QwenLM/Qwen2.5-VL 创建conda环境&#xff0c;实测22.04&#x…

宫庭海:跨界融合与家国情怀的影视开拓者

从音乐经纪人到影视多面手的创业之路 近日&#xff0c;国内娱乐产业领军人物、著名音乐经纪人、制片人、影视投资人宫庭海先生再次受到广泛关注。凭借其卓越的成就和贡献&#xff0c;宫庭海先生在业界树立了良好的口碑和广泛的影响力。 宫庭海&#xff0c; 辽宁省大连市人&…

LeetCode算法题(Go语言实现)_51

题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;两者长度都是 n &#xff0c;再给你一个正整数 k 。你必须从 nums1 中选一个长度为 k 的 子序列 对应的下标。 对于选择的下标 i0 &#xff0c;i1 &#xff0c;…&#xff0c; ik - 1 &#xff0c;你的 分数 …

并查集(力扣2316)

这种涉及不同连通分量的&#xff0c;看上去就可以用并查集。并查集的模板请参见上一篇内容。并查集&#xff08;力扣1971&#xff09;-CSDN博客 现在我们要求的是无法互相到达的点对。根据观察易得&#xff0c;我们只需要求出每个并查集的元素数量&#xff0c;然后遍历每个点&…

Python在生成艺术中的创新应用

Python在生成艺术中的创新应用 在数字艺术的浪潮中,Python以其强大的库支持和简洁的语法,成为了生成艺术领域的一颗璀璨明珠。今天,就让我们一起踏上这段充满创意与惊喜的旅程,探索Python如何在生成艺术中大放异彩。 一、引言 生成艺术,是一种通过算法自动生成艺术作品的…

ROS ROS2 机器人深度相机激光雷达多传感器标定工具箱入门教程(一)

系列文章目录 目录 系列文章目录 前言 一、安装 1.1 ROS 2 官方软件包 二、教程 2.1 标定配置器 2.1.1 机器人选项 2.1.2.1 外参相机-激光雷达标定 2.1.2.2 外参激光雷达-激光雷达标定 2.1.2.3 外参相机参照标定 2.1.2.4 外参激光雷达-参考标定 2.2 外参照相机-激…