在 Linux for Windows 上交叉编译 Qt5

Posted

技术标签:

【中文标题】在 Linux for Windows 上交叉编译 Qt5【英文标题】:Cross Compiling Qt5 on Linux for Windows 【发布时间】:2013-12-28 11:31:50 【问题描述】:

我最近使用本指南在 Linux 上交叉编译了一个适用于 Windows 的程序:Building Qt 5 on Linux, for Windows

但是,当我编译程序时,创建的可执行文件已损坏并且无法运行程序。相反,有一个错误,只有关闭它的选项。如果有人能回答为什么这样做,我们将不胜感激。下面我将列出几个事实。请在您的回答中具体说明(例如,如果原因是我可能在 GUI 中使用了 Windows 不可用的东西,请提供操作系统之间不可用的示例)我在在使用 Qt 时大约是中等入门级别,如果我要求对答案进行进一步解释,请提前原谅我。

使用 Qt Creator 2.8.1 编译(基于 5.1.1) 使用 Crunchbang 11(基于 Debian 7.0) 使用“cd mxe && make qtbase”和随后的“cd mxe && make qt5”进行测试 执行程序产生的错误(wine):Pastebin: Wine Error 程序执行时终端显示的调试信息:Pastebin: Debugging 该程序无法在典型的 Windows 7 环境中运行 构建日志:Pastebin: Build Log

从最初的发布时间开始,我可能需要几个小时来跟进。提前感谢所有提供积极意见的人。

【问题讨论】:

你在什么系统上?也许有一个用mingw构建的qt,你可以通过包管理器安装。另外:什么是compcal,它与口袋妖怪有什么关系? ;) 错误似乎是源自您的代码的空指针访问 能否请您显示构建日志? 查看类似的错误,似乎 wine 的 dll 有点……缺乏。有些东西的功能实际上是缺失的 :) 你在 Windows 上试过吗?也许 `winetricks comctl32 at a shell 会修复它。 @user3125280:我相信 OP 在 W7 上尝试过。请参阅帖子:“该程序在典型的 Windows 7 环境中无法运行”。 【参考方案1】:

我在 ArchLinux for Windows 上成功交叉编译了一个程序。 您的 Windows 机器上是否有所有必需的 dll? 这是我的目录中的列表:

platforms <DIR>
 - qminimal.dll
 - qwindows.dll
sqldrivers <DIR>
 - qsqlite.dll
icudt51.dll
icuin51.dll
icuuc51.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Sql.dll
Qt5Widgets.dll

拥有所有 dll 的正确版本也很重要。这些必须与用于交叉编译的 MinGW 版本相匹配。还需要带有两个 dll 的平台目录。对于我的应用,我还需要 SQLite 支持,因此有必要使用所需的 dll 创建另一个子目录。

【讨论】:

我会尽快检查一下,因为我目前正在安装虚拟操作系统以加快测试速度

以上是关于在 Linux for Windows 上交叉编译 Qt5的主要内容,如果未能解决你的问题,请参考以下文章

在linux上交叉编译c++到windows

windows上交叉编译go程序

windows上交叉编译go程序

在ubuntu上交叉编译Boost 1.57.0 for arm

在 Windows 上交叉编译 XZ-5.X.X

在linux上交叉编译opencv踩过的坑