2 Yocto 项目术语
以下是 Yocto 项目开发环境的新用户可能会觉得有用的术语和定义列表。虽然其中一些术语是通用的,但为了以防万一,该列表包括它们:
将构建信息附加到配方文件的文件。附加文件称为 BitBake 附加文件和.bbappend
文件。OpenEmbedded 构建系统期望每个附加文件都有一个相应的配方 ( .bb
) 文件。此外,附加文件和相应的配方文件必须使用相同的根文件名。文件名只能在使用的文件类型后缀(例如formfactor_0.0.bb
和 formfactor_0.0.bbappend
)上有所不同。
附加文件中的信息扩展或覆盖同名配方文件中的信息。有关使用中的附加文件的示例,请参阅Yocto 项目开发任务手册中的“将其他层元数据与您的层一起附加”部分。
命名附加文件时,可以使用“ %
”通配符来匹配配方名称。例如,假设您有一个名为如下的附加文件:
busybox_1.21.%.bbappend
该附加文件将匹配配方的任何busybox_1.21.
x.bb
版本。因此,附加文件将匹配以下任何配方名称:
busybox_1.21.1.bb
busybox_1.21.2.bb
busybox_1.21.3.bb
busybox_1.21.10.bb
busybox_1.21.25.bb
注意
“%”字符的使用受到限制,因为它只能直接在附加文件名称的 .bbappend 部分之前起作用。您不能在名称的任何其他位置使用通配符。
OpenEmbedded 构建系统用来构建镜像的任务执行器和调度器。有关 BitBake 的更多信息,请参阅BitBake 用户手册。
为特定硬件配置提供支持的一组驱动程序、定义和其他组件。有关 BSP 的更多信息,请参阅Yocto 项目板支持包开发人员指南。
该术语是指 OpenEmbedded 构建系统用于构建的区域。当您source
在源目录中找到设置环境脚本(即oe-init-build-env)时,将创建该区域。该 TOPDIR变量指向build目录。
创建构建目录时您有很大的灵活性。以下是显示如何创建目录的一些示例。这些示例假设您的源目录名为poky
:
在源目录中创建构建目录,并让构建目录的名称默认为
build
:$ cd poky $ source oe-init-build-env
在您的主目录中创建 Build Directory 并特别命名它
test-builds
:$ source poky/oe-init-build-env test-builds
提供目录路径并专门命名构建目录。路径名中的任何中间文件夹都必须存在。下一个示例创建一个
YP-25.0.2
在现有目录中命名的构建 目录mybuilds
:$ source poky/oe-init-build-env mybuilds/YP-25.0.2
注意
默认情况下,构建目录包含TMPDIR,这是构建系统用于其工作的临时目录。TMPDIR不能在 NFS 下。因此,默认情况下,构建目录不能在 NFS 下。但是,如果您需要构建目录位于 NFS 下,您可以通过在文件中设置TMPDIRlocal.conf
来使用本地驱动器来进行设置。这样做有效地将TMPDIR与TOPDIR分开,后者是构建目录。
用于在 Yocto 项目开发环境中构建映像的系统。构建系统有时被称为开发主机。
提供逻辑封装和继承的文件,以便可以定义一次常用模式,然后在多个配方中轻松使用。有关 Yocto 项目类的参考信息,请参阅“类”一章。类文件以.bbclass
文件扩展名结尾 。
保存变量的全局定义、用户定义的变量和硬件配置信息的文件。这些文件告诉 OpenEmbedded 构建系统要构建什么以及将什么放入映像以支持特定平台。
配置文件以.conf
文件扩展名结尾。构建目录 中的 conf/local.conf
配置文件包含影响每个构建的用户定义变量。该 配置文件只定义了这项政策建设时使用Yocto“发行”配置变量。机器配置文件位于整个 Source Directory 中,定义特定硬件的变量,仅在为该目标构建时使用(例如, 配置文件定义德州仪器 ARM Cortex-A8 开发板的变量)。meta-poky/conf/distro/poky.conf
machine/beaglebone.conf
包含其他层的层。容器层的一个例子是 OpenEmbedded 的元开放嵌入层。该 meta-openembedded
层包含许多meta-*
层。
一般来说,交叉开发工具链是一组软件开发工具和实用程序,它们运行在一个架构上,并允许您为不同的或有针对性的架构开发软件。这些工具链包含特定于目标架构的交叉编译器、链接器和调试器。
Yocto 项目支持两种不同的交叉开发工具链:
-
在为目标架构构建图像时仅由 BitBake 使用的工具链。
-
开发人员在开发将在目标设备上运行的应用程序时在 BitBake 之外使用的可重定位工具链。
这些工具链的创建既简单又自动化。有关应用于 Yocto 项目的工具链概念的信息,请参阅Yocto 项目概述和概念手册中的“交叉开发工具链生成”部分。您还可以在Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK)手册中找到有关使用可重定位工具链的更多信息。
面向应用程序开发人员的自定义 SDK。此 eSDK 允许开发人员将他们的库和编程更改合并回映像中,以便其他应用程序开发人员可以使用他们的代码。
有关 eSDK 的信息,请参阅Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK)手册。
图像是给定一组配方和相关元数据的 BitBake 构建过程的工件。图像是在特定硬件或 QEMU 上运行并用于特定用例的二进制输出。有关 Yocto 项目提供的受支持图像类型的列表,请参阅“图像”一章。
相关食谱的集合。层允许您整合相关元数据以自定义您的构建。层还隔离了在为多个架构构建时使用的信息。层在覆盖先前规范的能力方面是分层的。您可以包含 Yocto 项目中任意数量的可用层,并通过在它们之后添加层来自定义构建。您可以在图层索引中搜索 Yocto 项目中使用的图层。
有关层的介绍性信息,请参阅Yocto 项目概述和概念手册中的“ Yocto 项目层模型”部分。有关层的更多详细信息,请参阅Yocto 项目开发任务手册中的“理解和创建层”部分。有关 BSP 层的专门讨论,请参阅Yocto 项目板支持包 (BSP) 开发人员指南中的“ BSP 层”部分。
Yocto 项目的一个关键元素是用于构建 Linux 发行版的元数据,它包含在OpenEmbedded Build System 在构建映像时解析的文件中。一般来说,元数据包括配方、配置文件和其他参考构建指令本身的信息,以及用于控制构建内容和构建效果的数据。元数据还包括用于指示使用什么版本的软件、从何处获得软件的命令和数据,以及用于修复错误或定制软件以用于特定应用程序的软件本身(补丁或辅助文件)的更改或添加。特殊情况。OpenEmbedded-Core 是一组重要的经过验证的元数据。
在内核(“内核元数据”)的上下文中,该术语指的是包含在yocto-kernel-cache Git 存储库中的内核配置片段和功能 。
OE-Core 是由基础配方、类和相关文件组成的元数据,这些文件旨在在许多不同的 OpenEmbedded 派生系统(包括 Yocto 项目)中通用。OE-Core 是 OpenEmbedded 社区开发的原始存储库的精选子集,该存储库已被缩减为一个较小的、持续验证的核心配方集。结果是严格控制和质量保证的核心配方。
您可以meta
在 Yocto Project Source Repositories的目录中看到元数据。
特定于 Yocto 项目的构建系统。OpenEmbedded 构建系统基于另一个名为“Poky”的项目,该项目使用BitBake作为任务执行器。在 Yocto 项目文档集中,OpenEmbedded 构建系统有时简称为“构建系统”。如果引用了其他构建系统,例如主机或目标构建系统,文档会明确说明差异。
注意
有关 Poky 的一些历史信息,请参阅Poky术语。
在 Yocto 项目的上下文中,该术语指的是由 BitBake 生成的配方的打包输出(即“烘焙配方”)。包通常是从配方源生成的编译后的二进制文件。你通过 BitBake 运行它来“烘焙”一些东西。
值得注意的是,“包”一词通常具有微妙的含义。例如,“构建主机所需的包”部分中提到的包是编译后的二进制文件,安装后会向您的 Linux 发行版添加功能。
另一点值得注意的是,历史上在 Yocto 项目中,配方被称为包 - 因此,存在几个看似错误命名的 BitBake 变量(例如 PR、PV和 PE)。
任意组的软件食谱。您使用包组来保存构建时通常完成单个任务的配方。例如,软件包组可能包含公司专有或增值软件的配方。或者,包组可以包含启用图形的配方。包组实际上只是另一个配方。因为包组文件是配方,所以它们以.bb
文件扩展名结尾。
狭小,这是显着的麻面-ee,是参考嵌入式分布和参考测试配置。Poky 提供以下内容:
-
一个基本级别的功能发行版,用于说明如何自定义发行版。
-
一种测试 Yocto 项目组件的方法(即 Poky 用于验证 Yocto 项目)。
-
您可以通过该工具下载 Yocto 项目。
Poky 不是产品级发行版。相反,它是自定义的一个很好的起点。
注意
Poky 最初是由 OpenedHand 开发的一个开源项目。OpenedHand 从现有的 OpenEmbedded 构建系统开发 Poky,为嵌入式 Linux 创建一个商业支持的构建系统。英特尔公司收购 OpenedHand 后,poky 项目成为 Yocto 项目构建系统的基础。
一组构建包的说明。秘籍描述了从哪里获得源代码、应用哪些补丁、如何配置源代码、如何编译它等等。配方还描述了库或其他配方的依赖关系。配方代表执行的逻辑单元、要构建的软件、要构建的图像以及使用.bb
文件扩展名。
一个系统的工作示例,它包括一个 BSP以及一个 构建主机和其他组件,可以在特定硬件上工作。
该术语是指由于创建poky
Git 存储库的本地副本git://git.yoctoproject.org/poky
或扩展已发布的poky
tarball而创建的目录结构。
注意
创建 poky Git 存储库的本地副本是设置源目录的推荐方法。
有时您可能会听到用于指代这种目录结构的术语“poky directory”。
注意
OpenEmbedded 构建系统不支持包含空格的文件或目录名称。确保您使用的源目录不包含这些类型的名称。
源目录包含所有支持 Yocto 项目的 BitBake、文档、元数据和其他文件。因此,您必须在开发系统上安装源目录才能使用 Yocto 项目进行任何开发。
创建 Git 存储库的本地副本时,您可以随意命名存储库。在大部分文档中,“poky”用作 poky Git 存储库本地副本的顶级文件夹的名称。因此,例如,克隆poky
Git 存储库会生成一个本地 Git 存储库,其顶级文件夹也命名为“poky”。
虽然不建议您使用 tarball 扩展来设置源目录,但如果您这样做,源目录的顶级目录名称来自 Yocto 项目发布的 tarball。例如,下载和解压 https://downloads.yoctoproject.org/releases/yocto/yocto-3.3.2/poky-hardknott-25.0.2.tar.bz2 会生成一个根文件夹名为 的源目录 poky-hardknott-25.0.2
。
与克隆相比,了解通过解压缩已发布的 tarball 创建的源目录之间的差异很重要git://git.yoctoproject.org/poky
。当你解压一个 tarball 时,你有一个基于发布时间的文件的精确副本——一个固定的发布点。您对源目录中的本地文件所做的任何更改都在版本之上,并且只会保留在本地。另一方面,当您克隆poky
Git 存储库时,您将拥有一个活动的开发存储库,可以访问上游存储库的分支和标签。在这种情况下,您对本地源目录所做的任何本地更改都可以稍后应用于上游poky
Git 存储库的活动开发分支。
有关与 Git 存储库、分支和标签相关的概念的更多信息,请参阅Yocto 项目概述和概念手册中的“存储库、标签和分支”部分。
BitBake 的执行单元(例如 do_compile、 do_fetch、 do_patch等)。
Yocto 项目的OpenEmbedded Build System 的Web 界面。该界面使您能够配置和运行您的构建。有关构建的信息被收集并存储在数据库中。有关烤面包机的信息,请参阅 烤面包机用户手册。
对不在开发系统本地但位于由源代码维护者控制的主区域中的源代码或存储库的引用。例如,为了让开发人员处理特定的代码段,他们需要首先从“上游”源获取它的副本。