将较新的 qt 版本集成到较旧的 yocto 版本中

将较新的 qt 版本集成到较旧的 yocto 版本中

我们的项目基于同时过时的 yocto战士,这是我们 SoM 的供应商首先修改的。然后我们将 FreeScale/NXP 内核集成到其中,因为主线内核不支持我们需要的 GPU 功能。

让它工作起来是一段相当漫长的过程,但现在需要从我们的 qt 5.12 中切换过来。战士至 qt 5.15 (LTS)。我们希望避免切换到新的 yocto 版本,但仅更改 meta-qt5 层的签出会导致bitbake以下问题

ERROR: ParseError at meta-qt5/recipes-qt/qt5/qtwebengine_git.bb:83: Could not inherit file classes/features_check.bbclass

我预计这只是一系列不兼容性中的第一个,因此我问自己解决该问题的最佳方法是什么。

我是否应该启动自己的meta-qt5分支,将配方更改为使用qt 5.15.8并且仅从当前meta-qt5分支中挑选提交?

答案1

我现在也有同样的问题(基于 Warrior 的 bsp,我需要 Qt 5.15.2),这些是我已经尝试和发现的:

  • 有一个版本元qt55.15与兼容战士。但是,此版本使用了中不可用的类和功能战士(例如:features_check、mime-xdg 等等),所以我不知道它应该如何工作。
  • 第一个包含新 meta-qt5 所需功能集的 yocto 版本是邓费尔,所以我尝试将其他图层更新为与兼容的修订版邓费尔,但我的项目中可能有一半的层不提供与此 yocto 版本兼容的版本。

所以,总而言之,我们有什么选择(或者我已经知道的):

  • 我们可以更新支持并兼容较新版本的层(poky、meta-qt5 等)以及不手动执行的移植层;
  • (警告:可能是一个坏主意)从项目中排除meta-qt5,构建映像并生成SDK,然后使用项目SDK中的交叉编译和rootfs从源代码中交叉编译Qt。

我还没有找到其他解决方案。如果您已经解决了这个问题或者您仍在尝试这样做,请通过此电子邮件与我联系:[电子邮件受保护]

PS 由于缺乏声誉,我无法对 SE 上的问题发表评论,因此很抱歉使用答案部分。如果我们能找到 OP 的解决方案,那么我将用它更新答案。

答案2

这个帖子提供了如何在系统外部简单构建您选择的 Qt 版本的教程bitbake,以便将其集成到您的 yocto 构建中。我只是不明白这是否可以与取决于 Qt 的食谱一起使用。

目前我既没有这样做的冲动,也没有时间去测试。一旦我成功复制它,我可能会更新并接受答案。

答案3

一种解决方案是修改您的 esdk,其中包括 meta-qt5 层。指示可以在这里找到。

然而,您将面临许多问题,因为与 yocto Warriors 兼容的最新 meta-qt5 版本是 5.14.2。我建议保留官方支持的内容,否则您将不得不修复太多构建错误。

相关内容