【问题标题】:How do I set up a build environment for mingw and QT on Linux?如何在 Linux 上为 mingw 和 QT 设置构建环境?
【发布时间】:2018-02-17 12:45:07
【问题描述】:

我有一台 Ubuntu 构建机器。

我希望使用已安装的 MinGW 交叉编译 Windows。

我正在编译 QT 应用程序(恰好是 QT5)。

我正在使用 CMake。

本机构建开箱即用,但交叉编译非常失败,因为 CMake 找不到 FindPackage 使用的文件。为了解决这个问题,我将所有 QT 库文件、头文件、cmake 文件和 shared/qt5 下的文件从 MSYS2 MinGW/QT5 安装(运行良好)复制到我的 Ubuntu 构建机器上的相关 MinGW 文件夹中。我还象征性地将“qmake”、“rcc”、“moc”和“uic”的本机二进制文件链接到正确的位置,因为 QT5 cmake 文件似乎正在寻找它们。我想我应该编辑 cmake 文件以查找具有目标系统前缀的二进制文件,并重命名符号链接,但我很懒。

CMake 现在成功了,但是当我尝试“制作”我的程序时,我从“moc”收到以下错误:

moc: could not find a Qt installation of ''

我猜我缺少一两个环境变量。

理想情况下,我想要一个解决方案,它指定一些预构建的 Ubuntu 软件包,我可以安装这些软件包,以便使用 MinGW 在 Linux 上编译适用于 Windows 的 QT 应用程序,但坦率地说,任何工作都会很棒。

【问题讨论】:

  • 你看过mxe吗?它应该涵盖您的所有用例。
  • MinGW 是“Minimalist GNU for Windows”的缩写,是原生 Microsoft Windows 应用程序的极简开发环境。 Linux 上不需要 MinGW,因为那里有普通的 GNU。
  • @AlexanderVX:如果你想在 Linux 上为 Windows 构建,你确实需要它。事实上,我想不出任何其他方式在 Linux 上为 Windows 构建。请告诉您是否可以想到一个。
  • @MateoConLechuga:这看起来很有趣。不过,我不确定它与我们现有的构建环境的兼容性如何。我回去工作时会检查一下。谢谢!

标签: linux qt cmake mingw


【解决方案1】:

答案原来是我真的需要自己编译Qt的自定义版本。

我得到的错误是因为事实证明 qmake 二进制文件不是二进制文件,而是指向其他东西的符号链接。修复它使我能够成功编译,但所有依赖项都是错误的,并且生成的二进制文件不可运行。为了解决这个问题,我需要自己编译 Qt 及其所有依赖项 :(因为这些包括 Harfbuzz 及其循环依赖项,这并不好。我最后一次编译和使用此类二进制文件的尝试导致可执行文件简单地崩溃。

我真的很希望任何为 Ubuntu 提供 MinGW 包的人都可以用 MinGW 编译流行的包,例如 libicu、Qt 等,并将它们也作为包提供。

有用的链接:

https://marc.wäckerlin.ch/computer/cross-compile-on-ubuntu-linux-for-windows-using-mingw

https://github.com/mwaeckerlin/mingw

【讨论】:

    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多