如何在Yocto项目形象中构建个人应用程序?

如何在Yocto项目形象中构建个人应用程序?,yocto,bitbake,recipe,Yocto,Bitbake,Recipe,所以,我正在玩弄NXP的模块化网关,它似乎工作得很好。然而,我做事的方式似乎真的很低效,所以,我在乞求人们的智慧 NXP的模块化物联网网关提供了需要使用bitbake与Yocto项目一起构建的软件。我找到了我需要调整的代码部分和附带的食谱。但我的问题是,每次我需要构建源代码时,我都必须构建整个SD卡映像,它似乎连接了整个Linux操作系统。(我确实按照源代码构建手册的说明使用了映像的最小版本)。很自然,即使我在这里所做的更改对实际源代码的影响很小,也要花很多时间来构建映像 我的问题是。我是否可以

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

NXP的模块化物联网网关提供了需要使用bitbake与Yocto项目一起构建的软件。我找到了我需要调整的代码部分和附带的食谱。但我的问题是,每次我需要构建源代码时,我都必须构建整个SD卡映像,它似乎连接了整个Linux操作系统。(我确实按照源代码构建手册的说明使用了映像的最小版本)。很自然,即使我在这里所做的更改对实际源代码的影响很小,也要花很多时间来构建映像

我的问题是。我是否可以使用bitbake构建单个应用程序?我的计划是只构建附加到我调试过的源代码的配方,并以某种方式构建它们,如果它们产生类似tar包的结果,则在我已经构建的映像中提取/复制它们。总之

  • 可能吗?(构建和生成单个配方的二进制文件)
  • 你是怎么做到的

    很明显,我对Yocto项目还不熟悉,所以我尽了最大的努力寻找答案,但似乎我甚至不知道我要问的问题的正确搜索键

    感谢您阅读我的问题,祝您度过愉快的一天


  • 事实上,即使看起来是这样,也只有经过修改的配方在生产中。如果你第二次
    bitbake
    图像,只是添加了一个包,改变了配方中的某些东西,不管怎样,那么只需要处理不同的东西,然后重新包装到图像中

    例外情况:如果您使用
    INHERIT+=“rm work”
    设置了构建,因为这会在构建之后抛出所有东西,那么显然您必须完全重新构建

    这反过来意味着,如果对应用程序的一个简单更改触发了一个完整的重建,那么您可能(非自愿地)做了一些错误的事情


    对于开发过程中的一个选项,请查看
    devtool
    ,特别是其
    add
    modify
    deploy target
    命令。它可以在工作流程中有所帮助,但一般来说,你应该始终以正确的食谱为目标。

    事实上,即使看起来是这样,也只有经过修改的食谱正在生成。如果你第二次
    bitbake
    图像,只是添加了一个包,改变了配方中的某些东西,不管怎样,那么只需要处理不同的东西,然后重新包装到图像中

    例外情况:如果您使用
    INHERIT+=“rm work”
    设置了构建,因为这会在构建之后抛出所有东西,那么显然您必须完全重新构建

    这反过来意味着,如果对应用程序的一个简单更改触发了一个完整的重建,那么您可能(非自愿地)做了一些错误的事情


    对于开发过程中的一个选项,请查看
    devtool
    ,特别是其
    add
    modify
    deploy target
    命令。这在工作流程中会有所帮助,但一般来说,您应该始终以正确的食谱为目标。

    非常感谢您的评论。我可以问一下“使用INHERIT+=“rm work”设置构建”的确切含义吗?我在整个项目目录上做了grep,发现自己有很多,但其中一些似乎是允许整个构建使用INHERIT+=“rm work”关键字的部分。例如,rm_work.bbclas或ref-classes.xml。如果我想确保它不与我的构建一起设置,那么我必须在哪里查找它呢?补充说明:因此,我更仔细地研究了它,现在我确定在我的设置中没有启用“INHERIT+=”rm work“。我想就像你提到的,它似乎是整个配方集合中唯一修改过的部分。问题是,重新包装使其成为一张微型SD卡图像需要花费大量时间。我想我可能必须构建虚拟机来加快驱动速度或做些什么。@PesozuSejin不幸的是,在虚拟机中执行Yocto/OpenEmbedded工作只有一件事要说:不要这样做。它太慢了。事实证明,我可以单独构建特定的配方并查找二进制文件,这样我就可以将其移动/复制到预构建的图像中。现在我正在找出如何定义二进制将发生的位置。在我的例子中,它位于build目录的./tmp/work/某种机器名?/app name目录中。无论如何,非常感谢你帮助我。祝你今天愉快@Pesozusejin无需手动执行此操作,您可以使用
    devtool deploy target
    执行此操作。非常感谢您的评论。我可以问一下“使用INHERIT+=“rm work”设置构建”的确切含义吗?我在整个项目目录上做了grep,发现自己有很多,但其中一些似乎是允许整个构建使用INHERIT+=“rm work”关键字的部分。例如,rm_work.bbclas或ref-classes.xml。如果我想确保它不与我的构建一起设置,那么我必须在哪里查找它呢?补充说明:因此,我更仔细地研究了它,现在我确定在我的设置中没有启用“INHERIT+=”rm work“。我想就像你提到的,它似乎是整个配方集合中唯一修改过的部分。问题是,重新包装使其成为一张微型SD卡图像需要花费大量时间。我想我可能必须构建虚拟机来加快驱动速度或做些什么。@PesozuSejin不幸的是,在虚拟机中执行Yocto/OpenEmbedded工作只有一件事要说:不要这样做。它太慢了。事实证明,我实际上可以单独构建特定的配方并查找二进制文件,这样我就可以将其移动/复制到预构建中