为什么 Qt 必须从源代码构建才能进行交叉编译?

Why does Qt have to be built from source for cross-compilation?

我需要为 ARM 构建一个 Qt 应用程序。很多像 this one 这样的页面表明我必须使用一个冗长的过程从源代码构建 Qt。为什么这是必要的?我不能只更改 Qt Creator 中的目标平台,我在 Tools > Options > Build & Run > Compilers 下找到了吗?

对此我有点惊讶,因为 Eclipse CDT 不需要这样的过程。这似乎表明我必须为每个特定平台安装不同的 Qt。这似乎是一个糟糕的设计。有人可以启发我吗?

为了便于解释,应指出以下两者之间的区别:

  • LIBRARY,即Qt提供的代码

  • 使用该库的CODE,即您编写的代码。

为了节省反复编译LIBRARY的时间,因为它不经常变化(除其他原因),所以编译一次然后已编译的二进制文件链接在 CODE.

Tools > Options > Build & Run > Compilers 允许您添加工具来为目标平台编译 CODE提供 您已经编译了二进制文件由某人,例如Qt,适用于相同平台。

如果没有人这样做并且(最重要的)让二进制文件可供您使用,那么您必须自己做,这意味着您必须构建 LIBRARY从它的来源。

要查看是否有适用于您的目标平台的官方预编译二进制文件,请查看 the offline installers 页面。