【问题标题】:Building Qt 5 on Linux, for Windows在 Linux 上为 Windows 构建 Qt 5
【发布时间】:2012-12-19 16:26:57
【问题描述】:

我想迁移我的 Qt 4 应用程序以改用 Qt 5。 These instructions 失败,因为与 MXE 构建 Qt 5 的方式存在一些差异,包括它使用模块化 Qt 压缩包而不是一个大压缩包这一事实。

【问题讨论】:

    标签: qt qt5 mxe


    【解决方案1】:

    以下是完整说明:

    • 得到它:

      git clone https://github.com/mxe/mxe.git
      
    • 安装build dependencies

    • 为 Windows 构建 Qt 5:

      cd mxe && make qtbase
      

      这将首先构建其依赖项和交叉构建工具; 在具有良好互联网访问的快速机器上应该花费不到一个小时。

      由于 Qt 5 新的模块化特性,各种主要的 Qt 组件现在位于不同的 tarball 中。上面选择的 qtbase 应该为您提供足够的功能来运行普通的 GUI 应用程序,而这正是我自己的(小型)应用程序所需要的。

      如果您想构建所有 Qt 5,则需要运行 make qt5(而不是 make qtbase)。请注意,这将需要更长的时间才能完成,因此请确保您需要额外的功能。

    • 进入您的应用目录,然后运行 ​​Qt Makefile 生成器工具:

      <mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
      
    • 构建您的项目:

      make
      
    • 您应该在 ./release 目录中找到二进制文件:

      wine release/foo.exe
      

    一些注意事项:

    • 这是在我的 64 位 Debian 8 上测试过的,当然也在 Windows 上。

    • 输出是一个 32 位静态可执行文件,在 64 位 Windows 上运行良好。

    • 如果您想要 64 位可执行文件,请使用以下命令构建 Qt:

      make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
      

      默认的MXE_TARGETS 值为i686-w64-mingw32.static

    【讨论】:

    • 您找到答案了吗?如果不是,我不知道,也许可以将其作为一个单独的问题提出。
    • @MiyazawaKenji MSYS2 看起来很有前途,但它不适合这个特定的问题,因为它只在 Windows 上运行,而不是在 Linux 上运行。请记住,MXE 会交叉编译这些库。
    • @relascope 它是静态构建的,所以没有 dll 的东西;您只需将一个可执行文件放在任何地方即可部署。
    • 别忘了导出路径$ export PATH=&lt;mxe root&gt;/usr/bin:$PATH
    • 几年过去了,你的答案仍然是相关的,而且是天赐之物。我刚刚测试了它,WSL 中的 MXE,使用 qtcreator 创建静态链接的 Windows 可执行文件和非静态的 Linux 可执行文件。谢谢!
    【解决方案2】:

    git checkout 命令不正确。您现在必须获得他们的稳定分支,否则它将无法构建。

    git clone https://github.com/mxe/mxe.git
    

    应该是……

    git clone -b stable https://github.com/mxe/mxe.git
    

    仅此一项就解决了我构建 qtbase 的所有问题,但完成后没有留下任何 qt 文件夹。然后 qt5 目标将失败并出现晦涩的错误。删除文件夹,检查稳定,它工作完美。

    【讨论】:

    • 我猜这只是一个暂时的问题...master 现在可以工作,我实际上不记得它失败的时间,尽管我主要构建qtbase,而不是更大的@ 987654326@.
    • git clone -b stable github.com/mxe/mxe.git 不适合我
    • @j35t3r 我认为stable 分支已经不存在了。
    【解决方案3】:

    对于那些直接想要 GCC10 64bit 编译的 Qt5(例如文件系统库)的人, 以下是完整说明:

    得到它:

    git clone https://github.com/mxe/mxe.git
    

    安装build dependencies

    为 Windows 构建 Qt 5 并激活 gcc10 64 位插件:

    cd mxe && make MXE_TARGETS=x86_64-w64-mingw32.shared MXE_PLUGIN_DIRS=plugins/gcc10 qt5
    

    构建 2-3 小时后,您可以构建您的应用(在您的 .pro 目录中):

    <mxe root>/usr/x86_64-w64-mingw32.shared/qt5/bin/qmake
    

    编译器的导出路径并构建您的项目:

    export PATH=<mxe root>/usr/bin:$PATH
    make
    

    您应该在 ./release 目录中找到二进制文件并使用 wine(或 wine64)启动它:

    wine foo.exe
    

    我真的不知道为什么,但我需要将 MXE 编译器目录添加到 wine 路径,因为它找不到 DLL:

    WINEPATH="<mxe root>/usr/x86_64-w64-mingw32.shared/bin/" wine64 foo.exe 
    

    【讨论】:

      【解决方案4】:

      如果你尝试这样做,对我来说工作正常!

      su
      mv mxe /opt/mxe
      cd /opt/mxe && make
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2016-08-18
        • 2022-12-18
        • 1970-01-01
        • 2020-06-13
        相关资源
        最近更新 更多