devtool使用介绍1

  • SDK中devtool的工作流程
    • 2.4.1 使用 devtool add添加应用程序

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命令将内容放回原处。如果确定使用此命令,请记得保留源码树。

devtool使用介绍(1)相关推荐

  1. devtool使用介绍(3)

    devtool使用介绍3 2.4.3 使用devtool upgrade创建支持新版本软件的recipe版本 2.4.3 使用devtool upgrade创建支持新版本软件的recipe版本 dev ...

  2. devtool使用介绍(4)

    devtool使用介绍4 2.5 devtool add详细介绍 2.5.1名称和版本 2.5.2依赖性检测和映射 2.5.3 License检测 2.5.4添加Makefile-Only文件 2.5 ...

  3. devtool使用介绍(2)

    devtool使用介绍2 2.4.2 使用devtool Modify修改现有组件的来源 2.4.2 使用devtool Modify修改现有组件的来源 devtool Modify命令为使用已有代码 ...

  4. 弄懂webpack,只要看这一片就够了(文末有福利)

    什么是webpack ​ webpack是什么,官网中是这么说的. ​ 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webp ...

  5. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  6. React with Webpack -1: 介绍Helloworld

    React with Webpack -1: 介绍&Helloworld node.js 开发之react 学习1 context:node.js 开发的工具和lib发展的很快,in othe ...

  7. Vue 3拖更,尤雨溪介绍最新进展

    Vue.js 作者尤雨溪近日介绍了 Vue 3 的最新进展. 尤雨溪表示,由于在 Vue 3 上花费的大部分时间都投入到了设计和构建稳定的内核上,不过要让整个框架处于"ready" ...

  8. openlayers实例_介绍OpenLayers

    简介 Web开发有一个专门的方向就是Web GIS,而Openlayers库就是Web GIS里的一个翘楚,想要开源的Web GIS的JavaScript库几乎就没有别的选择. OpenLayers的 ...

  9. 介绍一个又快又准的截图骚操作

    截图是可以说是每个人必备的技能,有时候需要截个手机屏,有时候需要截个网页屏,方式有很多,各种快捷键和插件也都能够办到. 但下面这个情况不知道大家会怎么来做. 需求切入 有一天,我在电脑上看到了一条微博 ...

最新文章

  1. GBDT与XGBoost区别与联系 GBDT近些年来更因为被用于构建搜索排序的机器学习模型而引起广泛的关注
  2. php帝国下载文件,帝国CMS如何支持弹出下载txt jpg等格式
  3. Linux for windows
  4. 【Python】函数递归实例之字符串反转、汉诺塔问题分析
  5. 空字符python_Python中的None与 NULL(即空字符)的区别详解
  6. 多链路负载均衡及冗余
  7. LeetCode 198. 打家劫舍(动态规划)
  8. 继承、私有属性-Python
  9. windows7 nmap 命令行版本
  10. Linux内核ncsi驱动源码分析(二)
  11. 中证500指数的跟踪基金最近1年收益排名
  12. 凡诺php1.3收费版下载,fnqywz_php_v1.2
  13. access与project与python的区别_Access与 Excel区别
  14. 花狗C语言彩色贪吃蛇(完整代码)
  15. voicewo在线语音识别转换jQuery插件
  16. 【如何让文档左侧显示目录】
  17. QQ“只爱陌生人”,MSN“不和陌生人说话”
  18. 飞翔的小鸟1.0 JAVA
  19. 在OpenCV里车牌识别的方法2
  20. VMWare之——安装Windows Server 2012 后安装VMWare Tools报错

热门文章

  1. 学3DMAX之前「明确方向」学3DMAX想应用于哪些方面?
  2. 使用nginx做数据库端口转发
  3. Leetcode 15:三数之和(最详细解决方案!!!)
  4. 数据集标注工具Labelimg无法支持JPG格式图片的解决办法
  5. LaneNet车道线检测tusimple数据集处理
  6. pertII型管和pertI型管的区别
  7. waitKey函数详细使用
  8. kafka多线程并发消费处理
  9. sql server任何版本安装新实例
  10. No such file or directory while executing existing binary