【问题标题】:How do you build individual app inside Yocto Project Image?你如何在 Yocto Project Image 中构建单独的应用程序?
【发布时间】:2020-01-23 01:57:48
【问题描述】:

所以,我在玩 NXP 的模块化网关,它似乎工作正常。但是,我做事的方式似乎真的很低效,所以,我在乞求人们的智慧。

NXP 的模块化物联网网关提供了需要使用 Yocto Project 构建的软件,使用 bitbake。我找到了我需要修改的部分代码和附加的食谱。但我的问题是,每次我需要构建源代码时,我都必须构建整个 SDCard Image,它似乎附有整个 Linux 操作系统。 (我确实按照源构建手册的指示使用了图像的 -minimal 版本)。自然,即使我在这里所做的更改在实际源代码上非常微小,也需要花费大量时间来构建映像。

我的问题是这样的。无论如何,我可以使用 bitbake 构建个人应用程序吗?我的计划是只构建附加到我调整的源代码的配方,并以某种方式构建它们,如果它们产生类似 tar 包的结果,则将它们提取/复制到我已经构建的图像中。总之,

  1. 这可能吗? (构建和生成各个配方的二进制文件)
  2. 你是怎么做到的?

    我显然是整个 Yocto Project 的新手,所以我尽力寻找答案,但似乎我什至不知道我所问问题的正确搜索键。

    感谢您阅读我的问题,祝您有美好的一天!

【问题讨论】:

    标签: yocto bitbake recipe


    【解决方案1】:

    实际上,即使看起来像,也只是在构建修改后的配方。如果您第二次bitbake 图像并刚刚添加了一个包,更改了您的食谱中的某些内容,无论如何,那么只有不同的东西被处理,然后重新打包到您的图像中。

    例外:如果您使用INHERIT += "rm-work" 设置了构建,因为这会在构建后丢弃所有内容,那么您显然必须完全重建。

    这反过来意味着,如果对您的应用程序的简单更改触发了完全重建,那么您可能(不自觉地)做错了什么。

    对于开发过程中的选项,请查看devtool,尤其是in the sdk manual 指出的addmodifydeploy-target 命令。它可以在工作流程中提供帮助,但一般来说,您应该始终以正确的食谱为目标。

    【讨论】:

    • 非常感谢您的评论。请问'set up one's build with INHERIT +="rm-work"' 到底是什么意思?我对整个项目目录进行了 grep,发现其中有很多。但其中一些似乎是允许整个构建使用 INHERIT += "rm-work" 关键字的部分。例如,rm_work.bbclas 或 ref-classes.xml。如果我想确保我的构建没有设置它,我应该在哪里寻找它?
    • 添加了注释:所以,我更仔细地研究了它,现在我确定我的设置中没有启用 'INHERIT += "rm-work"'。我想就像你提到的那样,它似乎正在构建整个食谱集合中唯一修改过的部分。问题是,重新打包以使其成为单个 micro SD 卡映像需要大量时间。我想我可能需要构建虚拟机以更快地驱动或其他东西。
    • @PesozuSejin 不幸的是,关于在 VMS 中进行 Yocto/OpenEmbedded 工作只有一件事要说:不要这样做。它太慢了。
    • 事实证明,我实际上可以单独构建特定配方并查找二进制文件,以便我可以将其移动/复制到预构建的图像中。现在我正在研究如何定义二进制文件的发生位置。就我而言,它位于构建目录的 ./tmp/work/some kind of machine name?/app name 目录中。无论如何,非常感谢你帮助我。祝你有美好的一天!
    • @PesozuSejinno 需要手动操作,您可以使用devtool deploy-target为此。
    猜你喜欢
    • 2019-06-06
    • 2021-10-23
    • 2012-08-21
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多