4.Yocto项目概念

目录

4.1约克托项目组件

4.1.1比特贝克

4.1.2食谱recips

4.1.3类class

4.1.4配置conf

4.2层layer

4.3开放式构建系统概念

4.3.1用户配置

4.3.2元数据、机器配置和策略配置

4.3.2.1  distro

4.3.3来源

4.3.4包装馈送

4.3.5比特巴克工具

4.3.5.2 Patching

4.3.6图像

4.3.7应用开发SDK

4.4交叉开发工具链生成

4.5共享状态缓存

4.5.1总体架构

4.5.2校验和(签名)

4.5.3共享状态

4.6自动添加运行时依赖

4.7 Fakeroot 和 Pseudo


本章为Yocto项目概念提供了解释,这些概念超越了"如何"信息和参考(或查找)材料的表面。解释了组件、开放式构建系统工作流程、交叉开发工具链、共享状态缓存等概念。

4.1约克托项目组件

BitBake任务执行器以及各种类型的配置文件组成了开放式核心 (OE-Core)。本节通过描述这些组件的使用及其交互方式来概述这些组件。

BitBake 处理数据文件的解析和执行。数据本身是多种类型的:

  • 食谱:提供有关特定软件的详细信息。

  • 类数据:摘要常见构建信息(例如,如何构建 Linux 内核)。

  • 配置数据:定义机器特定设置、策略决策等。配置数据充当将所有内容结合在一起的粘合剂。

BitBake 知道如何将多个数据源组合在一起,并将每个数据源称为一层。有关图层的信息,请参阅 Yocto 项目开发任务手册中的"理解和创建层"部分。

以下是有关这些核心组件的一些简短细节。有关这些组件在构建过程中如何相互作用的其他信息,

请参阅"开放式构建系统概念"部分。

4.1.1比特贝克

BitBake 是开放式构建系统的核心工具,负责解析元数据,从中生成任务列表,然后执行这些任务。

本节简要介绍了 BitBake。如果您想要有关 BitBake 的更多信息,请参阅位贝克用户手册

要查看 BitBake 支持的选项列表,请使用以下任一命令:

$ bitbake -h
$ bitbake --help

BitBake 最常见的用法是,您想要构建的配方的名称(称为"目标")。目标通常等同于食谱文件名的第一部分(例如,名为"foo"的食谱)。因此,要处理配方文件,您可以键入以下类型:bitbake recipenamerecipenamefoo_1.3.0-r0.bbmatchbox-desktop_1.2.3.bb

$ bitbake matchbox-desktop

可能存在几个不同版本。BitBake 会选择按分配配置选择的。您可以在 BitBake 用户手册的"首选项"部分获得有关 BitBake 如何在不同目标版本和提供商之间进行选择的更多详细信息。matchbox-desktop

BitBake 还尝试先执行任何受抚养的任务。因此,例如,在构建之前,BitBake 将构建一个交叉编译器,如果尚未构建。matchbox-desktopglibc

需要考虑的有用 BitBake 选项是该选项或选项。此选项指示 BitBake 即使在遇到错误后,也尝试尽可能长时间地继续处理工作。当发生错误时,无法重新制造失败的目标和依赖错误的目标。但是,当您使用此选项时,仍可以处理其他依赖关系。-k--continue

4.1.2食谱recips

具有后缀的文件是"食谱"文件。一般来说,食谱包含有关单个软件的信息。此信息包括下载未改变源的位置、应用于该源的任何源补丁(如果需要),应用哪些特殊配置选项、如何编译源文件以及如何打包编译的输出。.bb

术语"包"有时用于指食谱。但是,由于"包"一词用于来自 OpenEmbedd 构建系统的包装输出(即。 或文件),本文档避免使用术语"包"时,指的是食谱。.ipk.deb

4.1.3类class

类文件 () 包含可用于在食谱文件之间共享的信息。例如自动工具类,它包含自动工具使用的任何应用程序的常见设置。Yocto 项目参考手册中的""一章提供了有关课程以及如何使用它们的详细信息。.bbclass

4.1.4配置conf

配置文件 () 定义管理开放式构建过程的各种配置变量。这些文件分为几个领域,定义机器配置选项,分配配置选项,编译器调谐选项,一般常见的配置选项,和用户配置选项,这是在构建目录中找到的。.confconf/local.conf

4.2层layer

层是包含相关元数据(即一组指令)的存储库,可告诉 OpenEmbedd 构建系统如何构建目标。 Yocto 项目层模型可促进 Yocto 项目开发环境中的合作、共享、定制和再利用。从逻辑上讲,为您的项目划分信息层。例如,您可以使用一层来保留特定硬件的所有配置。隔离特定于硬件的配置允许您使用不同的层来共享其他元数据,其中元数据在几个硬件中可能很常见。

在 Yocto 项目开发环境中有许多层工作。Yocto 项目策划层索引开放式层索引都包含您可以使用或利用的层。

按照惯例,Yocto 项目的层遵循特定形式。符合已知结构允许 BitBake 在构建到查找元数据类型时做出假设。您可以在《Yocto 项目开发任务手册》的"理解和创建层"部分找到创建适合 Yocto 项目的图层的程序并了解工具(即)。bitbake-layers

4.3开放式构建系统概念

本节对开放式构建系统(Yocto 项目特有的构建系统)使用的构建过程进行了更详细的了解。构建系统的核心是任务执行者 BitBake。

下图表示构建的高级别工作流。本节的其余部分扩展了构成工作流程的基本输入、输出、过程和元数据逻辑块。

../_images/YP流量图.png

一般来说,构建的工作流程由几个功能区组成:

  • 用户配置可用于控制构建过程的元数据。

  • 元数据层提供软件、机器和散数元数据的各种层。

  • 来源文件上游版本、本地项目和 SCM。

  • 构建系统比特贝克控制下的过程。此块扩展了 BitBake 获取源、应用修补程序、完成编译、分析封装生成输出、创建和测试封装、生成图像和生成交叉开发工具的情况。

  • 包装源包含输出包 (RPM、DEB 或 IPK) 的目录,这些输出包随后用于构建系统生成的图像或软件开发套件 (SDK)。如果启用了运行时间包管理,还可以使用 Web 服务器或其他方式复制和共享这些源,以方便在运行时间扩展或更新设备上的现有图像。

  • image:工作流生成的image。

  • 应用开发 SDK:与图像一起或与 BitBake 单独生成的交叉开发工具。

4.3.1用户配置

用户配置有助于定义构建。通过用户配置,您可以告诉 BitBake 您正在构建图像的目标架构、将下载的源存储在哪里以及其他构建属性。

下图显示了一般工作流程图的"用户配置"框的扩展表示:

../_images/用户配置.png

BitBake 需要一些基本的配置文件才能完成构建。这些文件是文件。最不需要的作为示例文件在源目录中。简单来说,本节将源目录称为"Poky 目录"。*.confbuild/conf

当您克隆Poky Git 存储库或下载并解包 Yocto 项目版本时,您可以设置源目录以命名任何您想要的。对于此讨论,克隆存储库使用默认名称。poky

注意

Poky 存储库主要是现有存储库的聚合。它不是一个规范的上游来源。

Poky 内部的层包含具有示例配置文件的目录。这些示例文件用作创建实际配置文件的基础,当您 source oe-init-build-env时,这是构建环境脚本。meta-pokyconf

采购构建环境脚本创建构建目录(如果尚未存在)。BitBake 在构建过程中使用生成目录进行所有工作。构建目录包含包含您和配置文件的默认版本的目录。只有当版本在源构建环境设置脚本时尚未存在于构建目录中时,才会创建这些默认配置文件。

conflocal.conf

bblayers.conf

由于 Poky 存储库从根本上是现有存储库的聚合,因此一些用户可能熟悉在单独的OpenEmbedd-Core (OE-Core)和 BitBake 存储库(而不是单个 Poky 存储库)的背景下运行oe-init-build-env脚本。此讨论假定脚本是从 Poky 的克隆或未包装版本内执行的。

根据脚本的来源,不同的子脚本被调用以设置构建目录(Yocto 或打开已设)。具体来说,poky 目录中的脚本设置构建目录,并(如有必要)为目录进行种子,配置文件适合 Yocto 项目开发环境。scripts/oe-setup-builddir

注意

scripts/oe-setup-builddir script 使用变量来确定要定位的示例配置文件。

$TEMPLATECONF

该文件提供了许多定义构建环境的基本变量。下面是一些列表。要查看构建环境脚本创建的文件中的默认配置,请参阅图层中的local.conf.samplelocal.conflocal.confmeta-poky

注意

 conf/local.conf 文件中设置的配置也可以设置在conf/site.conf conf/site.conf  配置文件中。

该文件告诉 BitBake 您希望在构建过程中考虑哪些层。默认情况下,此文件中列出的图层包括构建系统最不需要的层。但是,您必须手动添加您创建的任何自定义图层。您可以在 Yocto 项目开发任务手册中的"‎‎启用您的层‎‎"部分找到有关与文件合作的更多信息。‎bblayers.confbblayers.conf

‎文件不是由环境初始化脚本创建的。如果你想要的文件,你需要自己创建。该文件通常由自动建设者创建:‎

site.conf

auto.conf

site.conf

auto.conf

  • ‎site.conf: :‎‎您可以使用配置文件配置多个构建目录。例如,假设您有几个构建环境,它们具有一些共同的功能。您可以在此处设置这些默认构建属性。一个很好的例子也许是通过‎‎PACKAGE_CLASSES‎‎变量使用的包装格式。‎conf/site.conf

    ‎使用该文件的一个有用的方案是扩展您的‎‎BBPATH‎‎变量,包括路径到。然后,当 BitBake 使用‎‎BBPATH‎‎查找元数据时,它会找到该文件并应用文件中常见的配置。要覆盖特定构建目录中的配置,要更改该构建目录文件中的类似配置。‎conf/site.confconf/site.confconf/site.confconf/local.conf

  • ‎auto.conf::‎‎该文件通常由自动建设者创建并写入。放入文件的设置通常与在文件或文件中找到的设置相同。‎conf/local.confconf/site.conf

‎您可以编辑所有配置文件以进一步定义任何特定的构建环境。此过程由图中的"用户配置编辑"框表示。‎

‎当您使用命令启动构建时,BitBake 会整理出配置,以最终定义构建环境。重要的是要了解,‎‎开放式构建系统‎‎以特定顺序读取配置文件:并且,构建系统应用 BitBake 用户手册中的"‎‎语法和操作员‎‎"章节中描述的正常分配语句规则。由于文件按特定顺序解析,因此可能会影响同一变量的可变分配。例如,如果文件和设置的变量 1 到不同的值,因为构建系统解析后,可变 1 被分配从文件中的值。

bitbake targetsite.conf

auto.conf

local.confa

uto.conf

local.conf

local.conf

auto.conf

local.conf

4.3.2元数据、机器配置和策略配置

前一节描述了定义 BitBake 全球行为的用户配置。此部分更仔细地查看构建系统用于进一步控制构建的层。这些层为软件、机器和策略提供元数据。

一般来说,有三种类型的层输入。您可以在"用户配置"框下面看到一般工作流程图<查看手动/概念:打开的构建系统概念>:

  • 元Metadata (.bb + Patches): 包含用户提供的配方文件、补丁和附加文件的软件层。软件层的一个很好的示例可能是来自开放式层索引元-qt5层。此层适用于桌面、嵌入式和移动的流行Qt跨平台应用开发框架的 5.0 版本。

  • Policy Configuration: 提供机器特定配置的板支持包 (BSP) 层(即下图中的"BSP 层")。此类信息特定于特定目标架构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值