2使用可扩展 SDK
目录
2.1为什么要使用Extensible SDK?里面有什么?
2.4.2使用要修改现有组件的源代码devtool modify
2.4.3使用创建一个支持软件的新版本的配方的版本devtool upgrade
本章介绍可扩展 SDK 及其安装方法。信息涵盖了 SDK 的各个部分、如何安装它,并介绍了如何使用该devtool
功能。可扩展的 SDK 使向映像添加新应用程序和库、修改现有组件的源代码、测试目标硬件上的更改以及轻松集成到OpenEmbedded Build System的其余部分变得容易 。
注意
有关可扩展 SDK 支持的主要功能与标准 SDK 的并排比较,请参阅 简介部分。
除了通过 提供的功能外devtool
,您还可以直接使用工具链,例如来自 Makefile 和 Autotools。有关更多信息,请参阅“直接使用 SDK 工具链”一章。
2.1为什么要使用Extensible SDK?里面有什么?
可扩展 SDK 提供了针对特定图像内容量身定制的交叉开发工具链和库。如果您希望获得工具链体验并辅以devtool
为 Yocto 项目环境量身定制的强大命令集,您可以使用可扩展 SDK 。
安装的可扩展 SDK 由多个文件和目录组成。基本上,它包含一个 SDK 环境设置脚本、一些配置文件、一个内部构建系统和devtool
功能。
2.2安装可扩展SDK
您需要做的第一件事是通过运行安装脚本在您的构建主机上安装 SDK *.sh
。
您可以下载 tarball 安装程序,其中包括预构建的工具链、runqemu
脚本、内部构建系统 devtool
和来自版本索引中相应工具链目录的支持文件 。工具链可分别用于具有x86_64
目录的多个 32 位和 64 位体系结构。Yocto 项目提供的工具链基于 core-image-sato
和core-image-minimal
图像,并包含适合针对该图像进行开发的库。
tarball 安装程序脚本的名称是这样的:一个代表主机系统的字符串首先出现在文件名中,然后紧跟一个代表目标体系结构的字符串。可扩展 SDK 将字符串“-ext”作为名称的一部分。以下是一般形式:
poky-glibc-host_system-image_type-arch-toolchain-ext-release_version.sh
Where:
host_system is a string representing your development system:
i686 or x86_64.
image_type is the image for which the SDK was built:
core-image-sato or core-image-minimal
arch is a string representing the tuned target architecture:
aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon
release_version is a string representing the release number of the Yocto Project:
3.3.2, 3.3.2+snapshot
例如,以下 SDK 安装程序适用于 64 位开发主机系统和基于 SDKcore-image-sato
并使用当前 3.3.2 快照的 i586 调整目标架构:
poky-glibc-x86_64-core-image-sato-i586-toolchain-ext-3.3.2.sh
注意
作为下载 SDK 的替代方法,您可以构建 SDK 安装程序。有关构建安装程序的信息,请参阅 构建 SDK 安装程序 部分。
SDK 和工具链是独立的,默认情况下安装poky_sdk
在您的主目录中的文件夹中。运行安装程序时,您可以选择在任何位置安装可扩展 SDK。但是,由于在正常运行过程中需要将文件写入该目录下,因此您选择的安装位置必须对任何需要使用SDK的用户都是可写的。
以下命令显示了如何在给定工具链 tarball 的情况下运行安装程序,用于 64 位 x86 开发主机系统和 64 位 x86 目标架构。该示例假定 SDK 安装程序位于 ~/Downloads/
并具有执行权限。
注意
如果您没有安装 SDK 的目录的写入权限,安装程序会通知您并退出。对于这种情况,请在目录中设置适当的权限并再次运行安装程序。
$ ./Downloads/poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.5.sh
Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.5
==========================================================================
Enter target directory for SDK (default: poky_sdk):
You are about to install the SDK to "/home/scottrif/poky_sdk". Proceed [Y/n]? Y
Extracting SDK..............done
Setting it up...
Extracting buildtools...
Preparing build system...
Parsing recipes: 100% |##################################################################| Time: 0:00:52
Initialising tasks: 100% |###############################################################| Time: 0:00:00
Checking sstate mirror object availability: 100% |#######################################| Time: 0:00:00
Loading cache: 100% |####################################################################| Time: 0:00:00
Initialising tasks: 100% |###############################################################| Time: 0:00:00
done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /home/scottrif/poky_sdk/environment-setup-core2-64-poky-linux
2.3运行可扩展 SDK 环境设置脚本
安装 SDK 后,必须先运行 SDK 环境设置脚本,然后才能实际使用 SDK。此安装脚本驻留在您安装 SDK 时选择的目录中,该目录可以是默认poky_sdk
目录,也可以是您在安装过程中选择的目录。
在运行脚本之前,请确保它与您正在开发的体系结构相匹配。环境设置脚本以字符串“ environment-setup
”开头,并将调整后的目标架构作为其名称的一部分。例如,以下命令将工作目录设置为安装 SDK 的位置,然后获取环境设置脚本。在本例中,设置脚本用于使用 i586 调整的基于 IA 的目标机器:
$ cd /home/scottrif/poky_sdk
$ source environment-setup-core2-64-poky-linux
SDK environment now set up; additionally you may now run devtool to perform development tasks.
Run devtool --help for further details.
运行安装脚本定义了许多使用 SDK 所需的环境变量(例如PATH
, CC、 LD等)。如果您想查看脚本导出的所有环境变量,请检查安装文件本身。
2.4使用devtool
在你的SDK工作流程
可扩展 SDK 的基石是一个名为 devtool
. 此工具提供了许多功能,可帮助您在可扩展 SDK 中构建、测试和打包软件,并可选择将其集成到由 OpenEmbedded 构建系统构建的映像中。
注意
devtool 的使用不仅限于可扩展的 SDK。您可以使用 devtool 帮助您轻松开发任何项目,其构建输出必须是使用构建系统构建的映像的一部分。
该devtool
命令行类似地组织到 GIT中,它具有多个用于每个功能的子命令。您可以运行以查看所有命令。devtool --help
注意
有关 devtool 快速参考,请参阅 Yocto 项目参考手册中的“devtool 快速参考”。
三个devtool
子命令提供了开发的入口点:
-
devtool add:协助添加要构建的新软件。
-
devtool modify:设置一个环境,使您能够修改现有组件的源。
-
devtool upgrade:更新现有配方,以便您可以为一组更新的源文件构建它。
与构建系统一样,“配方”代表 devtool
. 当您使用 时,会自动创建一个配方。使用 时,将使用指定的现有配方以确定从何处获取源代码以及如何修补它。在这两种情况下,都会设置一个环境,以便在构建配方时使用受您控制的源树,以便您可以根据需要对源进行更改。默认情况下,新配方和源代码进入 SDK 下的“工作区”目录。devtool add
devtool modify
本节的剩余部分介绍了, 和工作流程。devtool add
devtool modify
devtool upgrade
2.4.1使用添加应用程序devtool add
该命令基于现有源代码生成新配方。此命令利用了 许多命令使用的工作空间层结构层。该命令足够灵活,允许您将源代码提取到工作区或单独的本地 Git 存储库中,并使用不需要提取的现有代码。devtool add
devtool
根据您的特定场景,您使用的参数和选项形成不同的组合。下图显示了您将与 命令一起使用的常见开发流程:devtool add
devtool add
-
生成新配方:流程的顶部显示了三个场景,您可以使用这些场景基于现有源代码生成一个配方。
devtool add
在共享开发环境中,通常由其他开发人员负责源代码的各个领域。作为开发人员,您可能有兴趣在 Yocto 项目中使用该源代码作为您开发的一部分。您所需要的只是访问代码、配方和进行工作的受控区域。
在图表中,三种可能的场景进入 工作流程:
devtool add
-
左:图中左边的场景代表了一种常见的情况,即本地不存在源代码,需要提取。在这种情况下,源代码被提取到默认工作区 - 您不希望文件位于工作区之外的某个特定位置。因此,您需要的一切都将位于工作区中:
$ devtool add recipe fetchuri
使用此命令,
devtool
将上游源文件提取到文件sources
夹内的本地 Git 存储库中。然后该命令在工作区中创建一个名为 recipe 的配方和一个相应的附加文件。如果您不提供配方,该命令将尝试确定配方名称。 -
Middle:图中的中间场景也代表了本地不存在源代码的情况。在这种情况下,代码再次位于上游,需要提取到某个本地区域 - 这次是在默认工作区之外。
注意
<
-