【问题标题】:Adding nativesdk-qt4-tools to my yocto SDK将 nativesdk-qt4-tools 添加到我的 yocto SDK
【发布时间】:2020-02-03 22:57:15
【问题描述】:

我正在尝试将 nativesdk-qt4-tools 添加到我的 yocto SDK。我希望这些库可用于主机可执行文件(在构建过程中使用)。

将 Qt 工具链添加到 SDK

我已将以下内容添加到我的 core-image-x11.bbappend 文件中:

TOOLCHAIN_HOST_TASK_append = "\
    nativesdk-packagegroup-qt-toolchain-host \
"
TOOLCHAIN_TARGET_TASK_append = "\
    qt4-x11-free \
"

当我查看目标 SDK 目录时,我找到了 qt 库,例如:

<path>/sysroots/arm1176jzfshf-vfp-poky-linux-gnueabi/usr/lib/libQtCore...

我希望在主机 SDK 中找到相同的文件;但是,它们不存在:

ls <path>/sysroots/x86_64-pokysdk-linux/usr/lib/libQt*
ls: cannot access '<path>/sysroots/x86_64-pokysdk-linux/usr/libQt*': No such file or directory

我在 TOOLCHAIN_HOST_TASK_append 中尝试了几种不同的 Qt4 配方,我还尝试将相同的配方添加到 INSTALL_IMAGE += "..." 但没有一个达到我想要的效果。

网上建议我可以跑步

bitbake -c populate_sdk meta-toolchain-qt

但是这也不会安装必要的库。

Qt5 有多种解决方案,但没有一个适用于 Qt4。不幸的是,这不是个人项目,所以升级到 Qt5 是不可能的。

【问题讨论】:

    标签: linux qt embedded-linux yocto


    【解决方案1】:

    事实证明,问题在于尝试使用错误的工具来完成这项工作。来自网上documentation(一位同事指给我看)

    “原生”是什么意思?

    “本机”后缀标识生成文件的配方(和配方的变体)用于构建主机,而不是目标机器。这通常用于构建过程中需要的工具(例如 automake)。

    “nativesdk”是什么意思?

    “nativesdk”前缀标识生成文件的配方(和配方的变体),这些文件用于标准 SDK 的主机部分,或用于构建类似于 SDK 的东西,例如 buildtools-tarball。这些是为 SDKMACHINE 构建的,它可能与构建主机的架构相同,也可能不同。

    正确的解决方案不是使用 nativesdk 构建设置,而是构建与主机系统更匹配的模拟器(例如 qemux86 或 qemux86_64)。当为模拟器创建 SDK 时,我们可以使用该 SDK 构建新的库和可执行文件,以使用与目标系统相同的软件版本在主机上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-24
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2020-06-22
      • 2018-06-28
      相关资源
      最近更新 更多