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 以上 |
|
不支持 |
支持 |
构建镜像 |
不支持 |
支持 |
可更新 |
不支持 |
支持 |
受管理的 sysroot [2] |
不支持 |
支持 |
安装软件包 |
不支持 [3] |
支持 [4] |
构建来源 |
软件包 |
共享状态 |
1 交叉开发工具链
交叉开发工具链
包括交叉编译器、交叉链接器和交叉调试器,用于为目标硬件开发用户空间应用。
可扩展 SDK 还内置 devtool。
工具链可以通过 SDK 安装脚本创建,
也可以通过基于目标设备元数据配置或扩展的 构建目录 创建。
交叉工具链与配套的目标 sysroot 一起使用。
1 系统根目录
原生和目标 sysroot 包含生成目标架构二进制文件所需的头文件和库。 目标 sysroot 基于 OpenEmbedded 构建系统生成的目标根文件系统镜像, 并使用与交叉工具链相同的元数据配置。
标准 SDK 与可扩展 SDK 的 sysroot 内容有所不同:
标准 SDK 的 sysroot 只包含 TOOLCHAIN_TARGET_TASK 或 TOOLCHAIN_HOST_TASK 中定义的软件包及其依赖的库和头文件,分别对应目标端与主机端 sysroot。
可扩展 SDK 的 sysroot 完全由 devtool 命令行工具管理, 内容与构建该 SDK 所用镜像配方的 sysroot 相同。
构建方法见 获取 SDK, 定制方法见 定制可扩展 SDK 独立安装程序。
1 QEMU 模拟器
QEMU 可以在运行应用或镜像时模拟目标硬件。 它不属于 SDK,但完成以下任一操作后,就会自动安装并可供使用:
按照 Yocto 项目开发任务手册的 准备使用 Yocto Project 配置 构建主机。
安装交叉工具链压缩包,并载入工具链的环境初始化脚本。
1 SDK 开发模型
SDK 在开发流程中的基本位置如下:
SDK 可以安装在任意机器上,用于开发应用、镜像和内核; QA 工程师或发布工程师也可以使用它。 核心思想是:安装 SDK 的机器不必与安装 Yocto 项目的机器关联。 开发者可以在自己的机器上独立编译和测试产物, 待产物准备好集成到镜像时,再交给安装了 Yocto 项目的机器。 随后即可使用 Yocto 项目重建镜像,生成包含修改的版本。
一般步骤如下:
安装面向目标硬件的 SDK: 安装方法见 “安装 SDK”。
下载或构建目标镜像: Yocto 项目支持多种目标架构, 并提供许多预构建内核镜像与根文件系统镜像。
如果要在真实硬件上开发,进入 machines 下载区, 选择目标机器目录并下载内核镜像和根文件系统。 该目录可能包含多种用于实际硬件开发的文件,例如将内核、文件系统、 引导加载程序等组合起来的
.hddimg。 请根据自己的开发流程选择所需文件。如果准备使用 QEMU 运行和测试应用,进入 machines/qemu 下载区, 再进入目标架构目录,例如 Intel 64 位架构使用
qemux86_64。 下载内核、根文件系统及开发流程所需的其他文件。备注
在 QEMU 中使用根文件系统前,需要先将它解压。 方法见 “解压根文件系统”。
开发和测试应用: 此时已经具备开发工具。 如果需要单独安装和使用 QEMU,可以在 QEMU 网站 下载并了解该模拟器。 在 Yocto 项目中使用 QEMU 的方法见开发任务手册的 使用快速模拟器(QEMU)。
本手册余下部分分别介绍可扩展 SDK 与标准 SDK 的使用方法。 附录还会介绍 SDK 的构建、安装与修改方式。