devtools工具如何使用_devtool制作插件

devtools工具如何使用_devtool制作插件7devtool快速参考目录7devtool快速参考7.1获得帮助7.2工作区层结构7.3向工作区层添加新配方7.4提取现有配方的来源7.5同步一个配方的提取源树7.6修改现有配方7.7编辑现有配方7.8更新配方7.9查看配方升级状态7.10升级配方7.11重置配方7.12建立你的配方7.13建立你的形象7.14在目标机器上部署你的软件7.15从目标机器上删除您的软件7.16在替代位置创建工作空间层7.17获取工作区中配方的状态

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

7devtool快速参考

目录

7devtool快速参考

7.1获得帮助

7.2工作区层结构

7.3向工作区层添加新配方

7.4提取现有配方的来源

7.5同步一个配方的提取源树

7.6修改现有配方

7.7编辑现有配方

7.8更新配方

7.9查看配方升级状态

7.10升级配方

7.11重置配方

7.12建立你的配方

7.13建立你的形象

7.14在目标机器上部署你的软件

7.15从目标机器上删除您的软件

7.16在替代位置创建工作空间层

7.17获取工作区中配方的状态

7.18搜索可用的目标配方


devtool命令行工具提供了许多功能,帮助您构建,测试和封装软件。此命令与bitbake命令一起可用。此外,该devtool命令是可扩展 SDK 的关键部分。

本章提供了该devtool命令的快速参考。有关在使用可扩展 SDK 时如何应用命令的更多信息,请参阅Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册中的“使用可扩展 SDK ”一章。

7.1获得帮助

devtool命令行的,因为它具有多个用于每个功能的子命令的类似组织GIT中。您可以运行 以查看所有命令:devtool --help

$ devtool -h NOTE: Starting bitbake server... usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q] [--color COLOR] [-h] <subcommand> ... OpenEmbedded development tool options: --basepath BASEPATH Base directory of SDK / build directory --bbpath BBPATH Explicitly specify the BBPATH, rather than getting it from the metadata -d, --debug Enable debug output -q, --quiet Print only errors --color COLOR Colorize output (where COLOR is auto, always, never) -h, --help show this help message and exit subcommands: Beginning work on a recipe: add Add a new recipe modify Modify the source for an existing recipe upgrade Upgrade an existing recipe Getting information: status Show workspace status latest-version Report the latest version of an existing recipe check-upgrade-status Report upgradability for multiple (or all) recipes search Search available recipes Working on a recipe in the workspace: build Build a recipe rename Rename a recipe file in the workspace edit-recipe Edit a recipe file find-recipe Find a recipe file configure-help Get help on configure script options update-recipe Apply changes from external source tree to recipe reset Remove a recipe from your workspace finish Finish working on a recipe in your workspace Testing changes on target: deploy-target Deploy recipe output files to live target machine undeploy-target Undeploy recipe output files in live target machine build-image Build image including workspace recipe packages Advanced: create-workspace Set up workspace in an alternative location extract Extract the source for an existing recipe sync Synchronize the source tree for an existing recipe menuconfig Alter build-time configuration for a recipe import Import exported tar archive into workspace export Export workspace into a tar archive other: selftest-reverse Reverse value (for selftest) pluginfile Print the filename of this plugin bbdir Print the BBPATH directory of this plugin count How many times have this plugin been registered. multiloaded How many times have this plugin been initialized Use devtool <subcommand> --help to get help on a specific command 

按照一般帮助输出中的指示,您可以通过提供命令名称并使用“–help”来获取有关特定命令的更多语法:

$ devtool add --help NOTE: Starting bitbake server... usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] [--npm-dev] [--version VERSION] [--no-git] [--srcrev SRCREV | --autorev] [--srcbranch SRCBRANCH] [--binary] [--also-native] [--src-subdir SUBDIR] [--mirrors] [--provides PROVIDES] [recipename] [srctree] [fetchuri] Adds a new recipe to the workspace to build a specified source tree. Can optionally fetch a remote URI and unpack it to create the source tree. arguments: recipename Name for new recipe to add (just name - no version, path or extension). If not specified, will attempt to auto-detect it. srctree Path to external source tree. If not specified, a subdirectory of /media/build1/poky/build/workspace/sources will be used. fetchuri Fetch the specified URI and extract it to create the source tree options: -h, --help show this help message and exit --same-dir, -s Build in same directory as source --no-same-dir Force build in a separate build directory --fetch URI, -f URI Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead) --npm-dev For npm, also fetch devDependencies --version VERSION, -V VERSION Version to use within recipe (PV) --no-git, -g If fetching source, do not set up source tree as a git repository --srcrev SRCREV, -S SRCREV Source revision to fetch if fetching from an SCM such as git (default latest) --autorev, -a When fetching from a git repository, set SRCREV in the recipe to a floating revision instead of fixed --srcbranch SRCBRANCH, -B SRCBRANCH Branch in source repository if fetching from an SCM such as git (default master) --binary, -b Treat the source tree as something that should be installed verbatim (no compilation, same directory structure). Useful with binary packages e.g. RPMs. --also-native Also add native variant (i.e. support building recipe for the build host as well as the target machine) --src-subdir SUBDIR Specify subdirectory within source tree to use --mirrors Enable PREMIRRORS and MIRRORS for source tree fetching (disable by default). --provides PROVIDES, -p PROVIDES Specify an alias for the item provided by the recipe. E.g. virtual/libgl 

7.2工作区层结构

devtool使用“工作区”层来完成构建。该层并非特定于任何单个devtool命令,而是整个工具中使用的公共工作区域。

下图显示了工作区结构:

../_images/build-workspace-directory.png

attic - A directory created if devtool believes it must preserve anything when you run "devtool reset". For example, if you run "devtool add", make changes to the recipe, and then run "devtool reset", devtool takes notice that the file has been changed and moves it into the attic should you still want the recipe. README - Provides information on what is in workspace layer and how to manage it. .devtool_md5 - A checksum file used by devtool. appends - A directory that contains *.bbappend files, which point to external source. conf - A configuration directory that contains the layer.conf file. recipes - A directory containing recipes. This directory contains a folder for each directory added whose name matches that of the added recipe. devtool places the recipe.bb file within that sub-directory. sources - A directory containing a working copy of the source files used when building the recipe. This is the default directory used as the location of the source tree when you do not provide a source tree path. This directory contains a folder for each set of source files matched to a corresponding recipe. 

7.3向工作区层添加新配方

使用该命令将新配方添加到工作区图层。您添加的配方不应该存在 -为您创建它。配方使用的源文件应该存在于外部区域中。devtool adddevtool

以下示例创建一个新配方并将jackson其添加到工具创建的工作区图层。由配方构建的源代码位于/home/user/sources/jackson

$ devtool add jackson /home/user/sources/jackson 

如果您添加了一个配方并且工作空间层不存在,则该命令会创建该层并按照“工作空间层结构”部分中的描述进行填充。

在工作区层存在时运行会导致该工具将配方、追加文件和源文件添加到现有工作区层中。创建该文件以指向外部源代码树。devtool add.bbappend

注意

如果您的配方定义了运行时依赖项,则在尝试运行您的应用程序之前,您必须确保这些包存在于目标硬件上。如果目标上不存在依赖包(例如库),您的应用程序在运行时将无法找到这些函数。有关更多信息,请参阅“在目标机器上部署您的软件”部分。

默认情况下,从远程 URI 解包文件时使用最新版本(即主版本)。在某些情况下,您可能希望通过分支、标记或提交哈希指定源修订。您可以在使用命令时指定这些选项:devtool adddevtool add

  • 要指定源分支,请使用以下--srcbranch选项:

    $ devtool add --srcbranch hardknott jackson /home/user/sources/jackson 

    在前面的示例中,您正在检查 hardknott 分支。

  • 要指定特定标签或提交哈希,请使用以下--srcrev 选项:

    $ devtool add --srcrev yocto-3.3.2 jackson /home/user/sources/jackson $ devtool add --srcrev some_commit_hash /home/user/sources/jackson 

    前面的示例检查了 yocto-3.3.2 标签和与 some_commit_hash 哈希关联的提交。

注意

如果您希望每次构建配方时都使用最新版本,请使用选项--autorev-a

7.4提取现有配方的来源

使用该命令提取现有配方的源。使用此命令时,您必须提供配方的根名称(即没有版本、路径或扩展名),并且必须提供要将源提取到的目录。devtool extract

其他命令选项让您可以控制开发分支的名称,您可以在其中检出源代码以及是否保留临时目录,这对于调试非常有用。

7.5同步一个配方的提取源树

使用该命令为现有配方同步先前提取的源树。使用此命令时,您必须提供配方的根名称(即没有版本、路径或扩展名),并且必须提供要将源提取到的目录。devtool sync

其他命令选项让您可以控制开发分支的名称,您可以在其中检出源代码以及是否保留临时目录,这对于调试非常有用。

7.6修改现有配方

使用该命令开始修改现有配方的来源。此命令与add命令非常相似, 不同之处在于它不会在工作区层中物理创建配方,因为配方已存在于另一层中。devtool modify

该命令提取配方的源代码,如果尚未从 Git 获取源代码,则将其设置为 Git 存储库,检出用于开发的分支,并将配方中的任何补丁应用为顶部提交。您可以使用以下命令检出源文件:devtool modify

$ devtool modify recipe 

使用上述命令形式,devtool使用现有配方的 SRC_URI语句定位上游源,将源提取到工作区中的默认源位置。使用的默认开发分支是“devtool”。

7.7编辑现有配方

使用该命令在指定的配方上运行使用变量标识的默认编辑器。devtool edit-recipeEDITOR

当您使用该命令时,您必须提供配方的根名称(即没有版本、路径或扩展名)。此外,作为或命令的结果,配方文件本身必须驻留在工作区中 。但是,您可以使用“-a”或“–any-recipe”选项覆盖该要求。使用这些选项中的任何一个,您都可以编辑任何配方,而不管其位置如何。devtool edit-recipedevtool adddevtool upgrade

7.8更新配方

使用该命令可以使用反映您对源文件所做更改的补丁来更新您的配方。例如,如果您知道要处理某些代码,则可以首先使用 devtool modify命令提取代码并设置工作区。之后,您可以修改、编译和测试代码。devtool update-recipe

当您对结果感到满意并且您已将更改提交到 Git 存储库时,您可以运行 以创建补丁并更新配方:devtool update-recipe

$ devtool update-recipe recipe 

如果在 不提交更改的情况下运行,该命令将忽略更改。devtool update-recipe

通常,您可能希望在自己的层中应用对软件进行的自定义,而不是将它们应用到原始配方。如果是这样,您可以在命令中使用-aor--append选项 。这些选项允许您指定要写入附加文件的层:devtool update-recipe

$ devtool update-recipe recipe -a base-layer-directory 

*.bbappend文件是在指定层目录中的适当路径创建的,该目录可能在您的bblayers.conf文件中,也可能不在。如果附加文件已经存在,该命令会适当地更新它。

7.9查看配方升级状态

上游配方随着时间的推移而变化。因此,您可能会发现需要确定是否可以将配方升级到较新的版本。

要检查配方的升级状态,请使用该 命令。该命令显示您当前配方版本、最新上游版本、配方维护者的电子邮件地址以及任何其他信息(例如提交哈希字符串和您可能无法升级特定配方的原因)的表格。devtool check-upgrade-status

注意

  • 对于oe-core层,配方维护者来自 维护者.inc 文件。

  • 如果配方使用Git Fetcher (git://) 而不是 tarball,则提交哈希指向与配方的最新版本标签匹配的提交。

与所有devtool命令一样,您可以获得有关单个命令的帮助:

$ devtool check-upgrade-status -h NOTE: Starting bitbake server... usage: devtool check-upgrade-status [-h] [--all] [recipe [recipe ...]] Prints a table of recipes together with versions currently provided by recipes, and latest upstream versions, when there is a later version available arguments: recipe Name of the recipe to report (omit to report upgrade info for all recipes) options: -h, --help show this help message and exit --all, -a Show all recipes, not just recipes needing upgrade 

除非您在命令行上提供特定的配方名称,否则该命令会检查所有配置层中的所有配方。

以下是报告所有食谱的部分示例表。请注意报告的未升级base-passwd配方的原因。在此示例中,虽然上游有新版本可用,但您不想使用它,因为对 的依赖cdebconf不容易满足。

注意

当显示不升级的原因时,通常使用RECIPE_NO_UPDATE_REASON 变量将原因写入配方中。有关 示例,请参阅 base-passwd.bb配方。

$ devtool check-upgrade-status ... NOTE: acpid 2.0.30 2.0.31 Ross Burton <ross.burton@intel.com> NOTE: u-boot-fw-utils 2018.11 2019.01 Marek Vasut <marek.vasut@gmail.com> d3689267f92c5956e09cc7d1baa4700141662bff NOTE: u-boot-tools 2018.11 2019.01 Marek Vasut <marek.vasut@gmail.com> d3689267f92c5956e09cc7d1baa4700141662bff . . . NOTE: base-passwd 3.5.29 3.5.45 Anuj Mittal <anuj.mittal@intel.com> cannot be updated due to: Version 3.5.38 requires cdebconf for update-passwd utility NOTE: busybox 1.29.2 1.30.0 Andrej Valek <andrej.valek@siemens.com> NOTE: dbus-test 1.12.10 1.12.12 Chen Qi <Qi.Chen@windriver.com> 

7.10升级配方

随着软件的成熟,上游配方升级到更新的版本。作为开发人员,您需要使您的本地配方与上游版本保持同步。有多种升级配方的方法。您可以在 Yocto 项目开发任务手册的“升级食谱”部分阅读有关它们的信息。本节概述了该命令。devtool upgrade

在升级配方之前,您可以检查其升级状态。有关详细信息,请参阅“检查配方的升级状态”部分。

该命令将现有配方升级到上游配方的更新版本。该命令将升级后的配方文件与任何关联文件一起放入“工作区”,并在必要时将源树提取到指定位置。在升级过程中,与配方相关的补丁会根据需要重新定位或添加。devtool upgrade

使用该命令时,您必须提供配方的根名称(即没有版本、路径或扩展名),并且必须提供要将源提取到的目录。其他命令选项让您可以控制诸如要升级到的版本号(即PV)、要升级到的源修订版(即 SRCREV)、是否应用补丁等内容。devtool upgrade

您可以在 Yocto 项目应用程序开发和可扩展软件开发工具包 (eSDK) 手册的“使用 devtool 升级创建支持较新版本软件的配方版本”部分中阅读有关工作流程的更多信息。您还可以在 Yocto 项目开发任务手册的“使用 devtool 升级”部分中看到如何使用的示例。devtool upgradedevtool upgrade

7.11重置配方

使用该命令从工作区层中删除配方及其配置(例如相应的文件)。意识到此命令会删除配方和附加文件。该命令不会为您实际移动它们。因此,在运行命令之前,您必须确保将更新的配方和附加文件物理重新定位到工作区层之外。devtool reset.bbappenddevtool reset

如果该命令检测到配方或附加文件已被修改,则该命令会将修改后的文件保存在工作区层下单独的“阁楼”子目录中。devtool reset

这是一个重置包含mtr配方的工作区目录的示例 :

$ devtool reset mtr NOTE: Cleaning sysroot for recipe mtr... NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no longer need it then please delete it manually $ 

7.12建立你的配方

使用该命令来构建您的配方。的 命令等同于 命令。devtool builddevtool buildbitbake -c populate_sysroot

当您使用该命令时,您必须提供配方的根名称(即不提供版本、路径或扩展名)。您可以使用“-s”或“–disable-parallel-make”选项在构建期间禁用并行make。下面是一个例子:devtool build

$ devtool build recipe 

7.13建立你的形象

使用该命令构建映像,将其扩展为包含工作区中配方中的包。当您想要一个准备好立即部署到设备上进行测试的映像时,使用此命令非常有用。为了正确集成到最终图像中,您需要适当地编辑自定义图像配方。devtool build-image

使用该命令时,必须提供图像的名称。此命令没有命令行选项:devtool build-image

$ devtool build-image image 

7.14在目标机器上部署你的软件

使用命令将配方的构建输出部署到实时目标机器:devtool deploy-target

$ devtool deploy-target recipe target 

target 是目标机器的地址,它必须运行一个 SSH 服务器(即user@hostname[:destdir])。

此命令部署在do_install任务期间安装的所有文件 。此外,您不需要在目标机器内启用包管理。如果这样做,将绕过包管理器。

注意

deploy-target功能仅用于开发。您永远不应该使用它来更新将在生产中使用的图像。

某些情况可能会阻止已部署的应用程序按预期运行。当满足以下两个条件时,您的应用程序在目标上运行时可能无法正常运行:

  • 您正在将一个新应用程序部署到目标,并且您用于构建应用程序的配方已经正确定义了运行时依赖项。

  • 目标实际上没有安装应用程序所依赖的包。

如果这两个条件都满足,您的应用程序将不会按预期运行。这种错误行为的原因是因为该 命令没有部署新应用程序所依赖的包(例如库)。假设包已经在目标上。因此,当在应用程序中为依赖函数(例如库调用)进行运行时调用时,无法找到该函数。devtool deploy-target

为确保您拥有目标本地的所有依赖项,您需要确保在尝试运行应用程序之前在目标上预先部署(安装)了这些包。

7.15从目标机器上删除您的软件

使用该命令从目标机器中删除已部署的构建输出。要使该 命令起作用,您必须以前使用过“ devtool deploy-target ”命令。devtool undeploy-targetdevtool undeploy-target

$ devtool undeploy-target recipe target 

target 是目标机器的地址,它必须运行一个 SSH 服务器(即 user@hostname)。

7.16在替代位置创建工作空间层

使用该命令在Build Directory 中创建一个新的工作区层。创建新的工作区图层时,它仅填充文件和 目录。devtool create-workspaceREADMEconf

以下示例在您当前的工作中创建一个新的工作区图层,并默认将工作区图层命名为“workspace”:

$ devtool create-workspace 

通过在命令中提供路径名,您可以在任何地方创建工作区图层。以下命令创建一个名为“new-workspace”的新工作区图层:

$ devtool create-workspace /home/scottrif/new-workspace 

7.17获取工作区中配方的状态

使用该命令列出当前工作区中的配方。信息包括它们各自的外部源树的路径。devtool status

该命令没有命令行选项:devtool status

$ devtool status 

以下是使用devtool add 创建mtr_0.86.bb配方并将配方添加到workspace目录后的示例输出 :

$ devtool status mtr:/home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb) $ 

7.18搜索可用的目标配方

使用该命令搜索可用的目标配方。该命令匹配配方名称、包名称、描述和安装的文件。该命令显示作为匹配结果的配方名称。devtool search

使用该命令时,必须提供关键字。该命令在搜索匹配项时使用关键字。devtool search

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185565.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题

    Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题Delphixe5控件TIdhttp的用法post,get解决中文乱码问题

  • 电商网站的商品详情页系统架构

    电商网站的商品详情页系统架构电商网站的商品详情页系统架构1小型电商架构:小型电商网站的页面展示采用页面全量静态化的思想。数据库中存放了所有的商品信息,页面静态化系统,将数据填充进静态模板中,形成静态化页面推入Nginx服务器。用户浏览网站页面时,取用一个已经静态化好的html页面,例如freemarker,thymeleaf等,直接返回回去,不涉及任何的业务逻辑处理。例如下面一个简单的魔板…

  • 解决document.cookie无法获取到cookie问题

    解决document.cookie无法获取到cookie问题一、前言在进行前后端联调的时候,由于想实现一个登出操作,前端自动删除浏览器存储的cookie,想通过document.cookie来获取进而进行删除操作,但是发现浏览器有cookie;但是无法获取到情况遂记录二、场景复现首先登录后,浏览器中是有记录cookie的,如图然后我代码层执行documen.cookie发现获取不到,浏览器控制台也同样后面去研究了一下application中存放的cookies的属性内容,发现有个属性HttpOnly是选中状态,这个状态是由于后端设置cookie的时候

  • BigDecimal比较建议用compareTo

    BigDecimal比较建议用compareTo点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:坚持就是胜利juejin.im/post/5d5a3882f265da03d60effb0前言前两…

  • 最新PHP 面试、笔试题汇总(code happy)[通俗易懂]

    最新PHP 面试、笔试题汇总(code happy)[通俗易懂]一、秒杀(商品超卖,高并发,同一用户多次抢购) 后端:redis+队列 redis队列实现,三个队列(库存队列,排队队列,抢购结果队列) 用户先进入排队队列,先进先出,判断是否已经在抢购结果队列,如果在,则直接下一个,如果不在,将用户信息加入抢购结果队列,库存-1,等待数据库空闲时,将抢购结果写入数据库 前端: 面对高并发的抢购活动,前端常用的三板斧是【扩容】【静态化】【限流】 扩容:加机器,这是最简单的方法,通过增加前端池的整体承载量来抗峰值。 静态化:将活动页面上的所有可以静态的

  • JS 面试题 大全

    JS 面试题 大全1、介绍一下js的数据类型有哪些,值是如何存储的?2、说一下js的数据类型的转换都有哪些?3、如何去判断js数据类型?4、介绍js有哪些内置对象?5、javascript创建对象的几种方式?6、js获取原型的方法?7、什么是闭包,为什么要用它?8、三种事件模型是什么?9、哪些操作会造成内存泄漏?10、简述javascript中this的指向?![在这里插入图片描述](https://img-blog.csdnimg.cn/2021032219142296.png

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号