c++ - 无法使用 MinGW 在 Linux 上为 Windows 构建

标签 c++ qt mingw qt-creator

因为我不是 Java 爱好者,所以我决定在我的一个项目中使用 C++ 和 Qt。但是,我遇到了交叉编译 Qt 的大问题,我无法为 Windows 用户生成 .exe 文件。

我的设置

Linux Ubuntu 12.04,带有 Wine 和 Qt。 qmake -v 给出以下输出:

QMake version 2.01a
Using Qt version 4.8.1 in /usr/lib/x86_64-linux-gnu

我还有一个 MinGW32 编译器,可以在 /usr/bin/i586-mingw32msvc-g++ 找到。我的 Wine drive_c 文件夹包含以下 Qt 目录:

$HOME/.wine/drive_c/Qt/Qt5.2.0/5.2.0/Src
$HOME/.wine/drive_c/Qt/Qt5.2.0/5.2.0/mingw48_32

mingw48_32目录包含了必要的include/lib/目录,在我的mkspec文件/usr中用到了/share/qt4/mkspecs/win32-x-g++/qmake.conf :

QMAKE_INCDIR_QT = /home/me/.wine/drive_c/Qt/Qt5.2.0/5.2.0/mingw48_32/include
QMAKE_LIBDIR_QT = /home/me/.wine/drive_c/Qt/Qt5.2.0/5.2.0/mingw48_32/lib

问题

根据我发现的大多数关于 Qt 交叉编译的指南,我的设置应该足以运行一个简单的:

qmake -spec win32-x-g++
make
wine /path/to/my/application.exe

但是……没有任何联系。 QApplication 和我在程序中使用的所有其他符号都“未找到”。没有QApplication,没有QPushButton,没有connect(),没有SIGNAL(),没有SLOT( )...

我的目标是成功配置 QtCreator 以使用此设置(在独立构建配置中),以便它可以构建 Linux 可执行文件(通过第一个工作配置)和 Win32 .exe(通过 MinGW 设置)多于)。但是,我无法修改 QtCreator 中的单个构建步骤:

  • 无法添加“MinGW”工具链:它在“添加”下拉列表中不可用。
  • 无法更改项目构建配置面板中的 -spec 参数值。该字段不可编辑。

尽管我在 Internet 上找到了各种指南和解决方案,但到目前为止我唯一的解决方案是将我的源代码发送到虚拟 Windows 机器,并让它用它创建一个新项目。在这个 VM 上,我可能可以为 Windows 编译...但是当然,这对我来说实际上听起来不像是真正的“解决方案”...

现在 Qt(Creator) 有什么办法可以让交叉编译变得更容易吗?我对“找不到符号”错误有点厌倦了......

最佳答案

首先,

sudo apt-get install mingw-w64

然后,检查 Qt Creator 是否找到工具链。

接下来,在 Ubuntu 开始提供 mingw-w64-qt 包之前,下载 Qt 源并构建它。这势必会变得困惑,甚至可能最简单的事情就是 install WINE and use a Windows Qt version .

关于c++ - 无法使用 MinGW 在 Linux 上为 Windows 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207376/

相关文章:

c++ - 从 QFormLayout 中创建的 QSpinBox 获取值

c++ - 列出 OpenCV 支持的文件扩展名

c++ - 用 QLinearGradient 绘制 QPushButton

mingw - MinGW 中的静态链接库

mingw - MSYS2 不提供 .profile

c++ - 在 C++ 中读取文件并处理可能的错误的可移植方法

c++ - 多线程软件的测试方法

c++ - QT : Templated Q_OBJECT class

c++ - 根据 Qt 版本动态使用 QGLWidget 或 QOpenGLWidget

python - MSYS2 和嵌入 Python。没有名为 'encodings' 的模块