【问题标题】:How do I get Qt SDK configured properly with Yocto project?如何使用 Yocto 项目正确配置 Qt SDK?
【发布时间】:2017-03-08 13:50:29
【问题描述】:

我是 Yocto 项目的新手。最初的想法是基于core-image-full-cmdline(没有窗口系统)和generate针对该图像创建一个Qt5 SDK的自定义图像。

  • 所以我的目标是能够运行 Qt 应用程序需要有一些 已安装标头和库,不是吗?我必须在我的图像配方上指定什么?
  • 执行$ bitbake my_image -c populate_sdk 将生成my_image 并支持Qt5 + SDK 安装程序?

据我了解,要获得 Qt SDK,步骤如下:

  1. 下载meta-qt5并将其添加到bblayers.conf。

  2. 添加到要构建 SDK 的镜像配方: inherit populate_sdk_qt5

  3. 配置 SDK 构建(添加/删除功能)。 EGLFS 支持,没有 X11/Wayland 和 Qtwebkit(还有 idk,也许还有一些我还不知道的其他功能)。
  4. bitbake my_image -c populate_sdk

我的构建在编译 Wayland 时出错,尽管我有这个: DISTRO_FEATURES_remove = "x11 wayland"

【问题讨论】:

  • populate-sdk 将生成一个脚本,为您的目标架构安装所有部件、Qmake、Qt 库和头文件。
  • @LPs 所以除了将 meta-qt5 添加到 bblaers.conf 之外,我不需要做任何其他事情?
  • 添加到 bblayers.conf 使Bitbake 能够看到所有配方到Qt5 层。您必须在您的配方或 local.conf 中添加所需的数据包,例如:qtbaseqt3dqtserial 等...然后将 inherit populate_sdk_qt5 添加到您的配方中以使 Yocto 能够安装所有Qt5 的组件到 SDK 中。
  • @LPs 你介意进一步解释或指出一些解释它的文档吗?我的意思是我想了解populate_sdk_qt5 的作用,并且我希望能够配置该过程。我的构建失败了。我需要禁用一些功能,因为我不需要 X11/Wayland 也不需要 qtwebkit。顺便说一句,关于我的第一点,我发现 Qt 应用程序可以部署在没有安装 Qt 库的目标上,但我可以捆绑它们,所以现在我不会安装 qt 包。我只需要获取 SDK。
  • 如果您的配方有效(Bitbake 可以播放完整配方)从“已编译”配方中填充 SDK 提取 SDK 所需的所有文件:交叉编译器、交叉链接器、库、接口 (.h)等等。因此,如果您想要一个适用于您的目标架构的 SDK,使用 Yocto,您必须有一个有效的秘诀。

标签: qt embedded yocto


【解决方案1】:

我犯了一些错误。所以这些是步骤:

  1. 下载meta-qt5并将其添加到bblayers.conf。

  2. 添加到要构建 SDK 的映像配方:inherit populate_sdk_qt5。现在 do_populate_sdk 任务知道目标,并将在相应的 sysroot 上安装所需的头文件和库(稍后将需要这些文件来配置 QtCreator)

    2.1 因为我们要生成一个 SDK,所以需要开发包。将此添加到图像配方中:IMAGE_FEATURES += "dev-pkgs"

    2.2 如果我们的发行版没有任何 Windows 管理器:DISTRO_FEATURES_remove = "x11 wayland"。我的错误是把它放在我的图像配方上,但它必须设置在local.conf 上,所以所有的配方都知道这一点。 More info about Qt backends

    2.3 我对此不确定,但我想删除 qtwebkit,我添加了(在 local.conf 上):PACKAGECONFIG_remove_pn-qttools = "qtwebkit" PACKAGECONFIG_remove_pn-qtquick1 = "qtwebkit"。仍然构建了 qtwebkit 模块。我需要对此进行更多调查。

  3. 构建镜像$ bitbake my_image

  4. 构建 SDK $ bitbake my_image -c populate_sdk

现在我们得到了交叉编译所需的工具链。

【讨论】:

    【解决方案2】:

    如果您想将 Qt5 添加到基于图像的 SDK,您需要将以下行添加到您的图像配方中:

    inherit populate_sdk_qt5
    

    【讨论】:

      【解决方案3】:
      1. 如果您想要默认的Qt5 SDK,请使用
        bitbake meta-toolchain-qt5
      2. 如果您需要带有额外包的 Qt5 sdk,则在编译 sdk 之后首先使用所需的包编译您的 qt5 映像。

        bitbake custom-qt5-image

        bitbake -c do_populate_sdk custom-qt5-image

      【讨论】:

        【解决方案4】:

        您必须将 conf/bblayers.conf 中 meta-qt5 的路径添加到 BBLAYERS 变量中。 我想这就是你需要开始的一切。

        【讨论】:

        • 我已经这样做了。所以当我构建时,bitbake 已经“知道”我想要的 SDK 来自 meta-qt5?
        【解决方案5】:

        对默认 Qt5 包使用默认 Qt5 SDK: 请按照以下链接中的步骤操作 Yocto Qt5 Toolchain Installation

        inherit populate_sdk populate_sdk_qt5IMAGE_FEATURES += "other packages" 在 your-custom-image.bb

        bitbake your-custom-image -c populate_sdk
        

        【讨论】:

          猜你喜欢
          • 2015-06-18
          • 2020-09-13
          • 2019-09-10
          • 1970-01-01
          • 2016-06-21
          • 1970-01-01
          • 2017-12-26
          • 1970-01-01
          • 2016-09-27
          相关资源
          最近更新 更多