2使用可扩展 SDK

本章节详细介绍了如何使用可扩展SDK进行开发,包括安装SDK、运行环境设置脚本,以及使用`devtool`命令添加新应用、修改现有组件源代码、升级软件版本。此外,还讲解了如何处理依赖、许可证检测、Makefile-only软件,以及添加原生工具和Node.js模块。在使用SDK的过程中,可以通过`devtool`进行工作流程,如构建、部署和测试。最后,讨论了如何恢复目标设备到初始状态、安装附加组件以及创建衍生SDK。
摘要由CSDN通过智能技术生成

2使用可扩展 SDK

目录

2使用可扩展 SDK

2.1为什么要使用Extensible SDK?里面有什么?

2.2安装可扩展SDK

2.3运行可扩展 SDK 环境设置脚本

2.4使用devtool在你的SDK工作流程

2.4.1使用添加应用程序devtool add

2.4.2使用要修改现有组件的源代码devtool modify

2.4.3使用创建一个支持软件的新版本的配方的版本devtool upgrade

2.5仔细观察devtool add

2.5.1名称和版本

2.5.2依赖检测和映射

2.5.3许可证检测

2.5.4添加 Makefile-only 软件

2.5.5添加原生工具

2.5.6添加 Node.js 模块

2.6使用配方

2.6.1查找日志和工作文件

2.6.2设置配置参数

2.6.3配方间共享文件

2.6.4包装

2.7将目标设备恢复到初始状态

2.8 将附加项安装到可扩展 SDK 中

2.9对已安装的可扩展 SDK 应用更新

2.10使用附加组件创建衍生 SDK


本章介绍可扩展 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-satocore-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 adddevtool modify

本节的剩余部分介绍了, 和工作流程。devtool adddevtool modifydevtool upgrade

2.4.1使用添加应用程序devtool add

该命令基于现有源代码生成新配方。此命令利用了 许多命令使用的工作空间层结构层。该命令足够灵活,允许您将源代码提取到工作区或单独的本地 Git 存储库中,并使用不需要提取的现有代码。devtool adddevtool

根据您的特定场景,您使用的参数和选项形成不同的组合。下图显示了您将与 命令一起使用的常见开发流程:devtool adddevtool add

../_images/sdk-devtool-add-flow.png

  1. 生成新配方:流程的顶部显示了三个场景,您可以使用这些场景基于现有源代码生成一个配方。devtool add

    在共享开发环境中,通常由其他开发人员负责源代码的各个领域。作为开发人员,您可能有兴趣在 Yocto 项目中使用该源代码作为您开发的一部分。您所需要的只是访问代码、配方和进行工作的受控区域。

    在图表中,三种可能的场景进入 工作流程:devtool add

    • :图中左边的场景代表了一种常见的情况,即本地不存在源代码,需要提取。在这种情况下,源代码被提取到默认工作区 - 您不希望文件位于工作区之外的某个特定位置。因此,您需要的一切都将位于工作区中:

      $ devtool add recipe fetchuri
      

      使用此命令,devtool将上游源文件提取到文件sources 夹内的本地 Git 存储库中。然后该命令在工作区中创建一个名为 recipe 的配方和一个相应的附加文件。如果您不提供配方,该命令将尝试确定配方名称。

    • Middle:图中的中间场景也代表了本地不存在源代码的情况。在这种情况下,代码再次位于上游,需要提取到某个本地区域 - 这次是在默认工作区之外。

      注意

      <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值