1 简介

1 SDK/eSDK 简介

欢迎阅读 Yocto 项目应用开发与软件开发套件(SDK/eSDK)手册。 本手册介绍如何使用标准 SDK 和可扩展 SDK 开发应用与镜像。

所有 SDK 都包含以下内容:

  • 交叉开发工具链: 包含编译器、调试器以及各种配套工具。

  • 库、头文件和符号: 这些内容与特定镜像对应, 即与构建 SDK 时所针对的镜像一致。

  • 环境初始化脚本: 载入这个 *.sh 文件后, 它会定义变量并配置交叉开发环境,供后续使用 SDK。

可扩展 SDK 还提供一组工具,使你能够轻松地向镜像添加应用和库、 修改现有组件源码、在目标硬件上验证修改, 并将应用集成到 OpenEmbedded Build System 中。

SDK 可用于独立开发和测试将来运行在目标机器上的代码。 SDK 完全自成一体,其二进制文件链接到自身携带的 libc 副本, 因此不依赖目标系统。为实现这一点,安装时会配置动态加载器的路径, 因为该路径无法在运行过程中动态改变。

另一个特点是,每种架构只生成一套交叉编译工具链二进制文件。 目标硬件差异可以通过编译选项传给 gcc;这些选项由环境脚本设置, 保存在 CC、LD 等变量中,从而降低工具所需的存储空间。 但每个目标仍然需要自己的 sysroot,因为其中的二进制文件与目标相关。

SDK 开发环境包括:

  • 自成一体的 SDK:由 OpenEmbedded 构建系统生成的架构专用交叉工具链, 以及配套的目标端和原生 sysroot。 工具链和 sysroot 基于 元数据 配置及其扩展, 允许在主机上面向目标硬件进行交叉开发。 可扩展 SDK 还包含 devtool 功能。

  • QEMU(Quick EMUlator):用于模拟目标硬件。 严格来说,QEMU 不属于 SDK,必须单独构建和加入。 不过,它在围绕 SDK 展开的开发流程中起着重要作用。

标准 SDK 与可扩展 SDK 共享许多功能, 但后者提供了更强大的开发工具,可加快应用开发。 下表概括了选择构建哪一种 SDK 时需要考虑的主要差异:

功能

标准 SDK

可扩展 SDK

工具链

支持

支持 [1]

调试器

支持

支持 [1]

大小

100 MB 以上

1 GB 以上;包含工具链的最小版本约 300 MB 以上

devtool

不支持

支持

构建镜像

不支持

支持

可更新

不支持

支持

受管理的 sysroot [2]

不支持

支持

安装软件包

不支持 [3]

支持 [4]

构建来源

软件包

共享状态

1 交叉开发工具链

交叉开发工具链 包括交叉编译器、交叉链接器和交叉调试器,用于为目标硬件开发用户空间应用。 可扩展 SDK 还内置 devtool。 工具链可以通过 SDK 安装脚本创建, 也可以通过基于目标设备元数据配置或扩展的 构建目录 创建。 交叉工具链与配套的目标 sysroot 一起使用。

1 系统根目录

原生和目标 sysroot 包含生成目标架构二进制文件所需的头文件和库。 目标 sysroot 基于 OpenEmbedded 构建系统生成的目标根文件系统镜像, 并使用与交叉工具链相同的元数据配置。

标准 SDK 与可扩展 SDK 的 sysroot 内容有所不同:

1 QEMU 模拟器

QEMU 可以在运行应用或镜像时模拟目标硬件。 它不属于 SDK,但完成以下任一操作后,就会自动安装并可供使用:

1 SDK 开发模型

SDK 在开发流程中的基本位置如下:

../_images/sdk-environment.svg

SDK 可以安装在任意机器上,用于开发应用、镜像和内核; QA 工程师或发布工程师也可以使用它。 核心思想是:安装 SDK 的机器不必与安装 Yocto 项目的机器关联。 开发者可以在自己的机器上独立编译和测试产物, 待产物准备好集成到镜像时,再交给安装了 Yocto 项目的机器。 随后即可使用 Yocto 项目重建镜像,生成包含修改的版本。

一般步骤如下:

  1. 安装面向目标硬件的 SDK: 安装方法见 “安装 SDK”。

  2. 下载或构建目标镜像: Yocto 项目支持多种目标架构, 并提供许多预构建内核镜像与根文件系统镜像。

    如果要在真实硬件上开发,进入 machines 下载区, 选择目标机器目录并下载内核镜像和根文件系统。 该目录可能包含多种用于实际硬件开发的文件,例如将内核、文件系统、 引导加载程序等组合起来的 .hddimg。 请根据自己的开发流程选择所需文件。

    如果准备使用 QEMU 运行和测试应用,进入 machines/qemu 下载区, 再进入目标架构目录,例如 Intel 64 位架构使用 qemux86_64。 下载内核、根文件系统及开发流程所需的其他文件。

    备注

    在 QEMU 中使用根文件系统前,需要先将它解压。 方法见 “解压根文件系统”。

  3. 开发和测试应用: 此时已经具备开发工具。 如果需要单独安装和使用 QEMU,可以在 QEMU 网站 下载并了解该模拟器。 在 Yocto 项目中使用 QEMU 的方法见开发任务手册的 使用快速模拟器(QEMU)。

本手册余下部分分别介绍可扩展 SDK 与标准 SDK 的使用方法。 附录还会介绍 SDK 的构建、安装与修改方式。