devtool使用介绍(1)

240 篇文章 11 订阅
30 篇文章 3 订阅

SDK中devtool的工作流程

可扩展SDK的核心要件是一个命令行工具,称为devtool。该工具提供了许多功能,可以帮助你在可扩展的SDK中构建,测试和打包软件,以及通过OpenEmbedded构建系统定制化构建该工具到镜像中。

注意
devtool的用途不限于可扩展的SDK。可以使用devtool帮助你轻松开发必须输出构建的任何项目 使用构建系统构建的图像的一部分。

该devtool命令行也同样被组织到Git中并包含了很多更小功能的子命令。你可以通过执行devtool --help查看所有命令。

注意
在Yocto项目参考手册中查看“ devtool快速阅览”能帮助你快速了解devtool。

存在如下三个devtool子命令,它们提供了开发的切入点:

  • devtool add :协助添加要构建的新软件。

  • devtool Modify :设置环境以便于开发者能够进行修改现有组件的来源。

  • devtool upgrade :更新现有recipe,以便于开发者可以将其构建为一组更新的源文件。

与构建系统一样,“recipes”代表devtool中的软件包。当你使用devtool add时,recipe会被自动创建。 使用devtool modify时,指定的现有recipe用于确定从何处获取源代码以及如何修补它。在这两种情况下都将建立了一个环境,以便于构建一个由你控制的,改变如你预期的recipe源码树。默认情况下,新的recipe和源代码都在SDK下的“workspace”目录。

本节的剩余部分介绍了 devtool add, devtool modify,以及 devtool upgrade工作流程。

2.4.1 使用 devtool add添加应用程序

devtool add命令根据现有源代码生成新recipe。该命令利用了许多devtool命令使用的The Workspace Layer Structure。 该命令足够灵活 允许你将源代码提取到工作区或单独的本地Git存储库,并使用不需要提取的现有代码。

根据你的特定情况,与devtool一起使用的参数和选项会形成不同的组合。下图显示了将与devtool add命令一起使用的常见开发流程:
在这里插入图片描述

  1. 生成新的recipe:流程的顶部显示了三种方案,你可以使用它们使用devtool add来基于现有源代码生成recipe。在共享开发环境中,其他开发人员通常要负责源代码的各个领域。作为开发人员,你可能有兴趣在Yocto Project中将源代码用作开发的一部分。你所需要做的就是访问代码,recipe以及在其中进行工作的受控区域。在该图中,将三种可能的情况提供给devtool add工作流程:
  • LEFT:图中的左侧场景代表一种常见情况,其中源代码在本地不存在,需要提取。 在这种情况下,源代码将提取到默认工作空间中-你不希望文件位于工作空间之外的某些特定位置。因此,你需要的所有内容都将位于工作空间中:
$ devtool add recipe fetchuri

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

  • Middle:图中的中间场景表示源代码在本地不存在的情况。在这种情况下,代码再次位于上游,并且需要提取到某个局部区域-这次是在默认工作空间之外。
注意
如果需要,devtool在提取过程中,总是在本地创建一个Git存储库。

此外,在这种情况下,第一个位置参数srctree标识devtool add命令将提取的代码定位在工作空间之外的位置。你需要指定一个空目录:

$ devtool add recipe srctree fetchuri

总而言之,源代码是从fetchuri中提取的,并被提取到srctree定义为本地Git存储库的位置。
在工作区中, devtool将创建一个名为recipe的recipe以及关联的附加文件。

  • Right::图中正确的情况表示srctree先前已在devtool工作空间之外准备的情况。
    以下命令提供了新的recipe名称,并标识了现有的源码树位置:
$ devtool add recipe srctree

该命令检查源代码,并为该代码创建一个名为recipe的recipe,并将该recipe放入工作区中。
由于提取的源代码已经存在,因此devtool不会尝试将源代码重新定位到工作空间中-仅将新recipe放置在工作空间中。
除了recipe文件夹之外,该命令还创建了一个关联的附加文件夹,并在其中放置了一个初始*.bbappend文件。

  1. 编辑Recipe:你可以使用devtool edit-recipe打开$ EDITOR环境变量定义的编辑器并修改文件:
$ devtool edit-recipe recipe

在编辑器中,你可以对recipe进行修改,这些修改将在以后构建时生效。

  1. 构建recipe或重建图像:下一步主要取决于对新代码的处理方式。
    如果最终需要将构建输出移至目标硬件,请使用以下devtool命令:
$ devtool build recipe

另一方面,如果你希望映像包含来自工作区的recipe软件包以立即部署到设备上(例如,出于测试目的),则可以使用devtool build-image命令:

$ devtool build-image image
  1. 部署构建输出:使用devtool build命令构建recipe时,你可能想查看生成的构建输出在目标硬件上是否按预期工作。
注意
此步骤假定你具有一个先前构建的映像,该映像已经在QEMU中运行或在实际硬件上运行。另外,假定为将映像部署到目标,映像中安装了SSH,并且如果映像在实际硬件上运行,那么你可以访问开发计算机或从开发计算机访问网络。

你可以使用devtool deploy-target命令将生成的输出部署到该目标硬件:$ devtool deploy-target recipe target目标是作为SSH服务器运行的实时目标计算机。
当然,你还可以使用devtool build-image命令将构建的映像部署到实际硬件。但是,devtool没有提供允许你将映像部署到实际硬件的特定命令。

  1. 使用recipe完成工作:devtool finish命令在本地Git存储库中创建与提交对应的所有补丁,将新recipe移动到更永久的层,然后重置recipe,以便正常构建recipe,而不是从工作区中构建recipe。
$ devtool finish recipe layer
注意
对补丁的任何更改都必须提交到源树中的Git存储库。

如前所述,devtool finish命令将最终recipe移至其永久层(没理解到,原文是:permanent layer)。
作为devtool finish命令的最后过程,将还原标准层和上游源的状态,以便你可以从这些区域而不是工作空间中构建recipe。

注意
如果你决定不想继续进行工作,则可以使用devtool reset命令将内容放回原处。如果确定使用此命令,请记得保留源码树。
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值