因为我不是 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/