【问题标题】:How to build Qt applications for imx6 processors?如何为 imx6 处理器构建 Qt 应用程序?
【发布时间】:2016-07-08 04:42:18
【问题描述】:

同样的question被问到类似的方式,但答案并不令人满意。这就是为什么我想再问一次:

  • 刚开始使用 Ubuntu 14.04 操作系统,我应该遵循哪些步骤在具有 imx6 处理器的嵌入式板上交叉编译和部署我的 Qt GUI 应用程序?
  • 除了Qt CreatorQt 5 之外,我是否需要安装任何工具和库?
  • 编译后,应用程序的功能是否有任何限制?也就是说,代码在PC上做的事情,也在板子上做?

【问题讨论】:

标签: linux qt build cross-compiling embedded-linux


【解决方案1】:

这是一个很大的问题!

您至少需要一个在您的 Ubuntu 系统上运行但为您的 iMX6 (ARM) 生成二进制文件的交叉编译器。通常,当您下载 Qt 时,它还会打包一个编译器,该编译器构建为在您下载 Qt 的平台上运行,并为同一平台创建二进制文件。您需要交叉编译,因此您的主机(可能)是 x86,但您的目标是 ARM。因此,您要么需要获得一个在 x86 上运行并生成 ARM 二进制文件的预构建编译器和库链,要么自己创建一个。对于流行的嵌入式平台(例如 Raspberry Pi),有预先构建的工具链,对于开发板,供应商通常可以提供某种形式的预先构建的工具链。为了完全控制产品,您通常会自己构建一个完全满足您产品需求的产品。

如果您在 ARM 平台上运行 Qt creator,则不需要交叉编译器,但是嵌入式环境通常相对较慢且资源有限,因此需要交叉编译。您可以在运行所有工具的快速机器上进行交叉编译,然后在速度较慢且受限的嵌入式系统上运行生成的二进制文件。

然后您必须交叉编译将在 iMX6 上运行的操作系统,可能包括自定义引导加载程序和适合您的嵌入式系统的驱动程序。

那么你需要针对这个 ARM 目标构建 Qt。

然后您可以在 Qt 中构建您的应用程序。

我建议您查看 Yocto (https://www.yoctoproject.org/) 来构建一个最小的系统以在 iMX6 上运行以及合作的交叉编译器。或者,您可以查看 crosstool-ng (http://crosstool-ng.org/) 来构建编译器,然后自己手动滚动 O/S。

通常,如果您有来自某个制造商的开发板,他们会为您完成所有这些工作,因此您至少可以在第一天试用!

【讨论】:

  • 以下哪些步骤与 mkspecs 相关?您可能知道,在 qt 文件夹中有一个 mkspecs 文件夹,您可以在其中选择目标设备的架构?
  • mkspecs 只是特定构建目标的编译器设置的集合,它是 Qts 管理多个编译目标细节的方式。你会在那里引用你的自定义交叉工具链,即你已经生成了一个叫做“linux-imx6-g++”的东西,所以你的 mkspec 会引用它。
  • 'Referring' 的意思是,设置该工具链的 Cross_Compiler 路径对吗?
  • 嗯,不仅仅是路径,mkspec 只是所有这些的一小部分。 Yocto 是一个构建嵌入式 linux 发行版的系统。它允许您轻松自定义分发中的内容,并为您构建交叉编译器。这些都不是简单或快速的,我现在警告你!
  • 因为它(可能)是为在 x86 上运行并生成 x86 二进制文件而构建的编译器。
【解决方案2】:

使用 Yocto 项目并寻找制造商/维护板(toradex、NXP/Freescale 等)或 Buildroot 的元层。

对于像使用 Yocto Project 这样的产品。

【讨论】:

  • 我可以清楚地看到 Yocto 项目支持 NXP/Freescale 板,但我不知道该遵循哪个指南。
  • @OnurA,如果你碰巧使用 Toradex 模块,你可以关注这些网络研讨会 (toradex.com/webinars/… & toradex.com/webinars/…) 为基于 Toradex ARM 的模块构建 Linux 镜像。该网络研讨会专门使用基于 NXP iMX6 的模块。第 1 部分的结尾描述了使用 Yocto 项目生成 SDK,可以对其进行定制以在 SDK 中包含对 Qt 的支持。网络研讨会的第 2 部分包括在自定义 Linux 映像中对 Qt 5 的支持。
猜你喜欢
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2022-06-20
  • 1970-01-01
相关资源
最近更新 更多