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

建站工具交流厦门网站搜索优化

建站工具交流,厦门网站搜索优化,网站用品推广网页,小公司没网站🔍 B站相应的视频教程: 📌 Yocto项目实战教程-第4章-4.2小节-菜谱 记得三连,标为原始粉丝。 在 Yocto 项目中,**菜谱(Recipe)**承载了包的配置信息、源码获取方式、编译与安装步骤,是…

🔍

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




在 Yocto 项目中,**菜谱(Recipe)**承载了包的配置信息、源码获取方式、编译与安装步骤,是将上游软件集成进嵌入式镜像的核心。本文从概念、结构、语法、示例到调试与最佳实践,系统梳理菜谱的作用和使用方法,帮助读者在 Yocto 构建系统中精准、高效地编写与维护菜谱。


在这里插入图片描述

一、菜谱概念

  • 定义:菜谱是一个后缀为 .bb.bbappend 的文本文件,以 BitBake 为引擎,描述如何获取、编译、打包、安装某个软件。
  • 职责
    1. 指定源码位置(SRC_URI)及校验(SRC_URI[sha256sum]);
    2. 定义依赖关系(DEPENDSRDEPENDS_${PN});
    3. 描述构建和安装步骤(do_compiledo_install 等);
    4. 配置包名、版本号、许可证等元数据。
  • 存放位置:通常放在各层(Layer)的 recipes-xxx/xxx/ 目录下,如 meta-myapp/recipes-example/helloworld/helloworld_1.0.bb

二、菜谱文件结构

一个典型的 .bb 文件可分为以下几个部分:

DESCRIPTION = "示例 HelloWorld 程序"
LICENSE     = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=abcdef123456..."SRC_URI = "git://example.com/helloworld.git;branch=main \file://extra-config.patch"SRCREV = "${AUTOREV}"
PV     = "1.0+git${SRCPV}"DEPENDS = "glibc"
RDEPENDS_${PN} = "bash"inherit autotools pkgconfigdo_install_append() {install -d ${D}${bindir}install -m 0755 helloworld ${D}${bindir}
}
  1. 元数据段
    • DESCRIPTIONLICENSELIC_FILES_CHKSUM:描述包内容、许可证及校验;
    • PV(包版本)、PR(发行号)等;
  2. 源码定义段
    • SRC_URI:源码地址,可支持 git://http://file:// 等;
    • SRCREV / SRCPV:用于确定 Git 提交版本;
  3. 依赖声明段
    • DEPENDS:构建时依赖的菜谱列表;
    • RDEPENDS_${PN}:运行时依赖的包;
  4. 继承类声明
    • inherit autotools:自动调用 configure/make/make install
    • inherit pkgconfig:生成 pkg-config 文件支持;
  5. 任务定义与扩展
    • do_compiledo_install:默认构建与安装步骤;
    • do_install_append():在 do_install 后追加自定义命令;

三、常见菜谱类型

  1. 源代码菜谱 (.bb)
    • 集成第三方开源软件。如 curl_7.88.1.bb
  2. 追加菜谱 (.bbappend)
    • 对已有菜谱做补丁或覆盖。放入 meta-my-layer/recipes-xxx/foo/foo_%.bbappend
  3. 包组菜谱 (packagegroup-*.bb)
    • 一次性安装一组相关包,如 packagegroup-core-ssh-openssh.bb
  4. 镜像菜谱 (image.bb)
    • 定义最终镜像中要包含的包,如 core-image-minimal.bb

四、核心语法要点

语法元素作用
${S}, ${B}源码目录、构建目录变量
${D}, ${PKGDATA_DIR}安装目标根目录、数据目录
S = "${WORKDIR}/git"指定源码实际解压位置
BB_NO_NETWORK = "0"允许在构建时联网下载
PACKAGE_ARCH指定包目标架构
EXTRA_OEMAKE传递给 make 的额外参数
BBCLASSEXTEND = "native"生成两个变体:native(宿主)与目标体系结构

五、实例演示:HelloWorld 菜谱

SUMMARY = "HelloWorld Demo"
DESCRIPTION = "一个简单的 HelloWorld 应用示例"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=abcdef123456"SRC_URI = "git://github.com/example/helloworld.git;branch=main"
SRCREV = "abcdef1234567890abcdef1234567890abcdef12"inherit autotoolsdo_install() {install -d ${D}${bindir}install -m 0755 helloworld ${D}${bindir}
}
  1. 克隆源码
  2. 自动执行 ./configuremake
  3. 在安装阶段,将编译生成的可执行文件拷贝到镜像 /usr/bin 目录

Tips:在本地调试时,可通过 bitbake -c devshell helloworld 进入源代码目录,手动运行构建命令。


六、高级特性

  1. 继承自定义类
    • 自定义 myclass.bbclass,将通用函数、变量抽象出来;
    • 在菜谱中 inherit myclass,复用逻辑。
  2. .bbappend 补丁机制
    • 对不上游菜谱进行行为定制或 BUG 修复;
    • 文件命名需保持和原菜谱相同的版本表达式。
  3. 多架构支持
    • 使用 COMPATIBLE_MACHINE 限定机器;
    • 使用条件语句 python __anonymous() 在特定机器上调整参数。
  4. 动态依赖与变量
    • DEPENDS += "libfoo-native":在运行时再追加依赖;
    • python __anonymous() / BB_ENV_EXTRAWHITE:动态生成变量。

七、BitBake 解析流程

  1. 元数据加载:扫描所有层中 .bb.bbappend
  2. 任务依赖分析:根据 DEPENDSRDEPENDS 构建 DAG;
  3. 任务执行:按顺序执行 do_fetchdo_unpackdo_patchdo_configuredo_compiledo_install
  4. 包打包:生成 .ipk/.deb/.rpm
  5. 镜像组装:将所选包放入根文件系统,生成最终镜像。

八、菜谱编写与调试工作流

  1. 创建菜谱
    • 执行 bitbake-layers create-layer meta-myapp
    • recipes-myapp/myapp/ 新建 myapp_1.0.bb
  2. 本地测试
    • bitbake -c fetch myappbitbake -c devshell myapp → 手动调试;
    • bitbake myapp 完整构建并查看日志 (tmp/work/.../temp/log.*);
  3. 增量修改
    • 修改 .bb 后执行 bitbake -c cleanall myapp && bitbake myapp
  4. 日志分析
    • 查看 temp/log.do_compiletemp/log.do_install,定位错误;
  5. 优化与重用
    • 抽象公共逻辑进 .bbclass
    • 将常用补丁与配置整理到 meta-myapp/recipes-support/

九、最佳实践

  • 统一版本表达PV = "1.0+git${SRCPV}",确保每次桥接最新提交;
  • 最小依赖原则:仅在 DEPENDS 中声明编译时必需的库;
  • 补丁管理:将补丁按功能命名,如 fix-crash.patch,并维护 series 文件记录;
  • 变量注释:对自定义变量要添加注释,提升可读性;
  • 遵循 Yocto 社区规范:变量命名、层结构与官方保持一致,便于后期合并官方更新。

十、总结

菜谱是 Yocto 项目中最关键的元数据单元,通过对菜谱结构和语法的深入理解,结合实例调试与最佳实践,能够快速集成、定制上游软件,实现高效、可维护的嵌入式 Linux 镜像构建流程。希望本文所述内容,有助于你在实际项目中编写更精准、清晰、健壮的菜谱。


🔍

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


http://www.dtcms.com/a/517669.html

相关文章:

  • html制作电影网站4399页游网站
  • 常见的网站建设技术有哪些wordpress参考手册
  • 创建网站免费注册wordpress上传到服务器
  • 温州专业营销网站建设南安seo关键词
  • 学校网站怎么查询录取我的世界封面制作网站
  • 用文件传输协议登录网站wordpress读取产品数据库
  • 网站建设销售简历网站同时做竞价和seo
  • 湘潭市哪里做网站wordpress防破解
  • h5商城网站怎么建设编程网址
  • 网站建设的工作群晖wordpress二级目录
  • 北京网站建设116net东莞做网页设计
  • 德国 网站后缀怎么制作免费网站
  • 计算机算法分类及区别详解
  • 电子商务网站规划设计包括哪些方面搜索李晓峰
  • 建设协会官方网站做网站需要每年都交钱吗
  • 看会员视频的网站开发做网站的公司叫什么
  • [手写系列]Go手写db — — 第六版(实现表连接)
  • 如何分辨动态公网ip和固定公网ip之间的关系有什么不同?
  • 靖边县建设局网站安徽阜阳网站建设
  • 高校网站建设 安全教育龙岩注册公司
  • 淘宝网那样的网站模板图片上的字体导入wordpress
  • 优度公司做的网站在线教育类网站模板
  • 太原企业网站制作公司聊城做网站的公司价格
  • Springboot | 初识Springboot 从“手动做饭”到“点外卖”的编程革命
  • 网站建设高凯里市住房和城乡建设局网站
  • 做网站需要了解哪些知识做餐饮要看的网站
  • 广东广州电脑个人建站排版设计技巧
  • 网站做的好看的山东ui设计培训班
  • 做网站的得花多少钱织梦 网站公告
  • 证券公司网站建设方案靖江网站优化