yocto系列之针对tarball编写recipes

回顾

针对借助yocto构建linux 镜像我们已经讲述了6部分, 简单回顾如下:

Yocto: 第1部分 - yocto系列之yocto是个什么东东

https://mp.csdn.net/mp_blog/creation/editor/136742286

Yocto: 第2部分 - yocto系列之配置ubuntu主机

https://mp.csdn.net/mp_blog/creation/editor/136745533

Yocto: 第3部分 - yocto系列之构建与运行第一个镜像

https://mp.csdn.net/mp_blog/creation/editor/136760112

Yocto: 第4部分 - yocto系列之针对rk3588平台构建一个基本镜像

https://mp.csdn.net/mp_blog/creation/editor/136760112

Yocto: 第5部分 -yocto系列之创建和添加新的layer

https://blog.csdn.net/hanpca/article/details/136781418?spm=1001.2014.3001.5502

Yocto:第6部分 -yocto系列之理解与创建第一个定制recipe

https://blog.csdn.net/hanpca/article/details/136781609

接下来的部分我们进入本篇主题。

为什么需要使用tarballs

许多现代的 bitbake recipe都使用 SCM(例如:git)。 然而,tarball 的使用依然普遍。现今,poky and open-embedded中的绝大多数recipe都将其源码树压缩为 tarball。

tarball 非常容易处理,它们在扩展之前消耗的存储空间很小,压缩算法被普遍使用,而且 bitbake 足够智能,因为成熟的文件名解析器的存在,bitbake可以处理 tarball 的版本控制。 事实上,许多基于 git 的源代码树都会以 tarball 的形式生成版本,然后在 bitbake recipe中使用。

tarballs存放在哪

提供给bitbake tarballs的远程URL

将 tarball 放在位于recipes内部的本地files 文件夹中

tarballs recipe的结构

recipe使用的tarball的结构类似我们在第六部分写的recipe源码树的结构, 细微的差别是针对tarballs, SRC_URI变量现在指向本地的tarball。

在接下来的示例中,我们应用cmake进行编译。

针对本地tarball创建recipe

创建recipe占位符

第六部分中我们在yocto layer meta-test中创建了名为hwlocal的recip,目录结构如下:

现在我们针对本地local tarball创建名为hwtarlocal的recipe,以及相关的其他资源列表如下:

准备归档

获取我们示例中将要使用的源代码,源代码位置:

GitHub - hannahrepo/yocto-test-apps: Sample source code library written to illustrate the yocto build steps.

在所应用PC机的合适位置clone源代码:

git clone https://github.com/teggerhan/yocto-test-apps.git  hwtarlocal-0.1

将clone下的源代码压缩为tarball

tar -czvf hwtarlocal-0.1.tar.gz hwtarlocal-0.1

将版本(0.1)附加到tarball(以及克隆的repo)的目的是为了便于版本控制和可重用性。

要使用最新版本的tarball,需要做的就是创建一个新recipe或简单地更改现有recipe的名称。例如,假设tarball版本为0.5,只需将recipe重命名为hwtarlocal_0.5.bb,构建时则会选这个最新版本,而不需要更改recipe的内容。

将hwtarlocal-0.1.tar.gz文件copy到files目录下, 现在目录结构如下:

编写recipe

现在我们快速地写出recipe, 如我们前面提到的,这个recipe的结构与我们之前编写的hwlocal的recipe非常相似。另外,注意在这个配方中使用了cmake, 与前面一样,我们将二进制输出安装到输出映像的/usr/bin目录中。

recipe文件hwtarlocal_0.1.bb内容如下:

怎么获取LICENSE的md5文件呢?有两种方法介绍如下:

手动计算LICENSE的md5sum:

可以放置一个虚拟的md5sum,然后在第一次bitbake运行时,bitbake本身会告诉我们LICENSE的md5sum值不匹配,实际的md5sum应该是xxx。

现在我们可以构建这个recipe了。

bitbake hwtarlocal

如果按着之前的文章已经利用bitbake构建过镜像, 那么本次构建过程会很快。

针对远程tarball创建recipe

这个过程需要两步完成:创建recipe占位符与编写recipe。

创建recipe占位符

在meta-test目录下,创建我们所需的资源目录与对应的recipe文件hwtarfetch_0.1.bb,如下:

编写recipe

我们使用同一个github repo作为我们的示例源代码库:

GitHub - hannahrepo/yocto-test-apps: Sample source code library written to illustrate the yocto build steps.

下载这个repo的一个release:

Releases · hannahrepo/yocto-test-apps · GitHub

下载asset:

Release test_release · sckulkarni246/yocto-test-apps · GitHub

下载到的完整的tarball名字是:

yocto-test-apps-hwtarfetch_0.1.tar.gz

编写的完整的recipe文件是:

SRC_URI是tarball文件的地址。此外,由于我们没有使用tarball名称的预期格式,我们将显式地告诉bitbake使用S的提供tarball名称而不是使用默认值。

在第六部分(yocto系列之理解与创建第一个定制recipe),我们看到环境变量S是构建目录中未打包配方源代码所在的位置。对于任何recipe,bitbake都将这个变量预先填充为WORKDIR。然而,由于我们使用了非预期格式的tarball名称,我们显式地告诉bitbake要使用的具体的路径名称。此外,注意tarball名称版本号之前用的连接符是_不是-。

SRC_URI[sha256sum] 有两种填充方式

直接计算:

或者给出一个虚拟值, 然后让bitbake第一次编译的时候告诉我们真实的sha256sum。

现在可以使用这个recipe构建目标镜像了:

bitbake hwtarfetch

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

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

相关文章

弗洛伊德-华沙算法求任意两点之间的最短路径算法

对于弗洛伊德-华沙算法首先是要假设研究的图中是不包含有负边的,对于所给的图中的任意亮点v1,vm,假设两点之间存在一条连通路径,对于该路径中去掉头和尾节点,也就是v1,vm,剩下的节点也就称之为这…

JNDI注入原理及利用IDEA漏洞复现

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

自定义全能搜索HTML源码

基础功能 可自定义通过筛选搜索,内容结果以嵌入方式展示,并不会直接跳转该地址显示,将以内嵌页面形式浏览,可自行添加其他地址搜索!也可以做搜索引导页等等! 界面布局; 源码为自适应端&#…

21-分支和循环语句_while语句(中)(初阶)

21-2 代码准备 getchar():获取字符 int ch getchar(); //把获取的字符的ASCII码值放在ch中 int main() {int ch getchar();printf("%c\n", ch); //ch存的是该字符的ASCII码值,此处以字符形式打印ASCII码值对应的字符putchar(ch); } 运…

【2024第一期CANN训练营】3、AscendCL运行时管理

文章目录 【2024第一期CANN训练营】3、AscendCL运行时管理1. 初始化与去初始化2. 资源申请与释放2.1 申请流程2.2 释放流程2.3 运行模式(可选) 3. 数据传输3.1 接口调用流程3.2 主要数据传输场景1. Host内的数据传输2. 从Host到Device的数据传输3. 从Dev…

排序算法:快速排序(递归)

文章目录 一、创始人托尼霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言:这里所说的快速排序有三种,第一种是霍尔大佬自创的,还有一种叫做挖坑法,另外一种叫前后指针法 一、创始人托尼霍尔的快速排序 1.这里我们先…

拆解Spring boot:Springboot为什么如此丝滑而简单?源码剖析解读自动装配

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

MySQL 篇- Java 连接 MySQL 数据库并实现数据交互

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 JDBC 概述 2.0 实现 Java 连接 MySQL 数据库并实现数据交互的完整过程 2.1 安装数据库驱动包 2.2 创建数据源对象 2.3 获取数据库连接对象 2.4 创建 SQL 语句 2.…

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符

8.Python从入门到精通—Python 字符串,转义字符,字符串运算符 Python 字符串创建字符串访问字符串中的字符字符串切片字符串操作符字符串方法 Python 转义字符Python字符串运算符 Python 字符串 在 Python 中,字符串是一种基本数据类型,用于表示文本数据…

构建部署_Docker常用命令

构建部署_Docker常见命令 启动命令镜像命令容器命令 启动命令 启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看docker状态:systemctl status docker 开机启动&…

Java微服务分布式事务框架seata

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

SSH远程连接断开后,程序继续运行

1、问题 我们在使用SSH连接远程服务器跑代码的时候,可能会遇到 代码需要跑很久 的情况,你可能会想 断开远程连接,但是,代码仍然要继续跑。 (eg: 晚上关电脑,但是想让代码继续跑着,第二天想看结果) 2、scre…

哪里有视频素材网站免费下载?高清烟花视频素材哪里有?

如果你在寻找那些能点亮夜空的绚丽烟花视频素材,或者无水印的高清视频素材,那下面这些资源网站将会是你的宝库。今天,我要分享给你一些最佳的无水印视频素材下载网站,让你的视频制作闪耀起来。 1.蛙学府 这个网站是视频创作者的天…

Centos strema 9 环境部署Glusterfs9

本文档只是创建复制卷,分布式卷,分布式复制卷,纠删卷 操作系统 内核 角色 Ip地址 说明 CentOS Stream 9 x86_64 5.14.0-427.el9.x86_64 客户端 client 192.168.80.119 挂载存储业务机器 CentOS Stream 9 x86_64 5.14.0-427.el9.x8…

开展“人工智能+”行动,Gooxi与你一起奔赴新质未来

在今年两会上,“新质生产力”成为了反复被提及的热词。在政府发布的工作报告中“大力推进现代化产业体系建设,加快发展新质生产力”更是被置于政府工作任务的首位。具体说来,发展新质生产力包括产业链升级、培育新产业、推进数字经济建设三方…

linux安装anconda

第一步: 下载anaconda 下载地址:(选择Linux版本的) https://repo.anaconda.com/archive/第二步: 把下载好的anaconda放到指定的路径 然后在该路径下(我是直接放属于我的根目录下) 输入以下命令…

国创证券|资源再生概念持续活跃,超越科技两连板,大地海洋等走高

资源再生概念15日盘中再度走强,截至发稿,超越科技涨停斩获两连板,深水海纳涨超14%,大地海洋涨超12%,华新环保涨近9%,天奇股份、格林美、怡球资源等涨超5%。 消息面上,3月13日,国务院…

ElasticSearch架构设计

一、基础概念 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: 一个分布式的实时文档…

【2024第一期CANN训练营】2、AscendCL概述

文章目录 【2024第一期CANN训练营】2、AscendCL概述1. AscendCL架构及基本概念1.1 什么是AscendCL?1.2 AscendCL的优势1.3 AscendCL应用场景1.4 基本概念 2. AscendCL接口调用流程2.1 流程概述2.2 详细步骤2.3 头文件和库文件 3. 准备开发和运行环境3.1 部署环境3.2…

便携式气象站的工作原理

TH-BQX9便携式自动气象观测仪器是一种集成了多种传感器和自动化技术的气象监测设备,以其便携性、自动化和高精度等特点,广泛应用于气象、环保、农业、科研等领域。 首先,它的便携性是其最大的优势之一。设计紧凑、轻便易携,使得用…