【问题标题】:Can a Yocto recipe be built using the SDK?可以使用 SDK 构建 Yocto 食谱吗?
【发布时间】:2016-12-14 22:19:57
【问题描述】:

我有一个 Yocto 项目,编译需要相当长的时间。最终图像旨在运行我的应用程序,因此,我在自己的层中有一个自定义配方。

由于构建整个 Yocto 映像需要我们的几个,因此我构建了一个 SDK,以便我可以交叉编译我的应用程序并将二进制文件传输到正在运行的设备进行测试。

无需编译二进制文件并将其手动传输到设备, 我可以将我为我的应用程序编写的 Yocto 配方与 SDK 一起使用,以便我可以“调用”它的 do_package() 吗?如果其他开发人员可以简单地从 SDK 构建.deb(假设PACKAGE_CLASSES = "package_deb"local.conf),这可以大大简化我们的工作流程。

谢谢!

【问题讨论】:

  • 据我所知这是不可能的,但是您可以在构建服务器上设置一个 yocto 环境并让其他开发人员运行“bitbake
  • 第一次运行初始构建过程需要几个小时。后续构建将运行得更快(不到一分钟),因为大量构建将被缓存。
  • 我们的目标是必须重建一切。一些开发人员在 VM 中工作,因此重建 yocto 是不可能的,即使他们有时想构建我们的代码。至于共享构建服务器,我们确实有,但它无法扩展。任何时候只能运行一个bitbake(项目的每个git克隆),或者有多个克隆复制磁盘空间和时间。我只想编译我们自己的代码,而不是整个 yocto 发行版...

标签: yocto


【解决方案1】:

嗯,bluelightning 打败了我。那会教我不要刷新。无论如何,这是我的 2 美分:

是的,看看devtool。 devtool 脚本的目标是改进和简化针对目标设备的软件开发。

首先,让您的开发人员安装使用以下命令构建的可扩展 SDK (eSDK):

bitbake -c populate_sdk_ext my-image-name

获取此 SDK 后,运行以下命令:

devtool modify my-recipe-name
...make your changes to [sdk]/workspace/source/my-recipe-name...
devtool build my-recipe-name
devtool package my-recipe-name

这应该会在 [sdk]/tmp/deploy/rpm/[arch]/my-recipe-name 中生成一个应用程序包,然后可以将其部署到目标计算机。

另外,如果您的目标机器有网络连接,请查看devtool deploy-target

如果您提供有关您的设置的更多详细信息,我可能会提供更多帮助。希望这至少能让你指出正确的方向。

【讨论】:

  • 谢谢!这正是我所需要的。我已经写好了我的食谱,我主要需要一种方法来构建它,而无需之前构建整个图像。 devtool build my-recipe-name 似乎正是我所需要的。不幸的是,我无法让它发挥作用。我得到cannot touch [...]/qt.conf。如果我在meta-qt5/classes/populate_sdk_qt5_base.bbclass 中创建目录,sdk 会构建,但无法使用SDK preparation failed 安装。日志显示 python+cmake 错误、ambiguous redirectapt-native 配置错误。可能是因为我在 jethro 和老 meta-qt5...
【解决方案2】:

这正是 Extensible SDK 的设计初衷 - 提供预构建和预配置的环境,并允许您以与使用完整构建系统构建应用程序和其他组件的方式几乎相同的方式构建应用程序和其他组件。如果目标设备上正在运行 ssh 服务器,您甚至可以轻松地将输出文件部署到目标设备。

您可以使用以下命令构建可扩展的 SDK:

bitbake -c populate_sdk_ext <imagename>

有关更多信息,您不妨阅读新的SDK manual

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 2020-04-09
    • 2020-01-12
    • 2021-05-18
    • 2021-04-16
    • 2019-12-05
    • 2018-07-17
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多