C++ 在Linux上使用GCC交叉编译适用于Windows的Qt应用程序

C++ 在Linux上使用GCC交叉编译适用于Windows的Qt应用程序,c++,linux,qt,gcc,mingw-w64,C++,Linux,Qt,Gcc,Mingw W64,理想情况下,我希望使用GCC在64位Linux上编译我们基于QT的应用程序,这些应用程序还链接其他第三方库,但用于64位Windows目标。同样理想的是,我希望结果在64位Windows上运行,而不需要任何额外的运行时支持,就像我们在Visual Studio中编译了相同的源代码一样。这在MinGW-w64上可能吗 我已经成功地使用MinGW-w64在Windows上用GCC编译了简单的应用程序。我不确定MinGW-w64安装中有多少是对可执行文件的运行时支持,而不是对GCC编译环境的支持。我确

理想情况下,我希望使用GCC在64位Linux上编译我们基于QT的应用程序,这些应用程序还链接其他第三方库,但用于64位Windows目标。同样理想的是,我希望结果在64位Windows上运行,而不需要任何额外的运行时支持,就像我们在Visual Studio中编译了相同的源代码一样。这在MinGW-w64上可能吗


我已经成功地使用MinGW-w64在Windows上用GCC编译了简单的应用程序。我不确定MinGW-w64安装中有多少是对可执行文件的运行时支持,而不是对GCC编译环境的支持。我确实尝试在没有MinGW-w64的Windows安装上运行WinGW-w64 hello world可执行文件,但缺少dll错误。这告诉我一些运行时支持是必要的,但我想更准确地知道需要什么。

如果你不想安装Windows,我认为最好的方法是使用虚拟机。这是因为即使源代码为Windows编译,如何验证它是否运行?您将需要一个真正的目标环境来最终测试您的应用程序

从复杂性的角度来看,我认为为Qt设置一台Windows机器(VM或非VM)和必要的环境比事后交叉编译bug搜索要简单得多

您可以在已安装的Windows上安装Qt,在那里复制项目,编译项目,并在真实环境中查看结果。通过这种方式,您可以轻松地处理从一个操作系统移植到另一个操作系统时的细微差异

没有什么能阻止您在Linux上开发。您可以在Linux上完成整个开发,只需在准备好的Windows上编译并运行代码即可。使用git将代码发送到Windows环境很简单。开发过程可以如下所示:

  • 创建应用程序的存储库,在Linux和Windows上克隆存储库
  • 在Linux和push上进行主要开发
  • 不时打开Windows,编译、测试并进行小的修复,然后推送

有什么原因不能通过虚拟机在Windows中构建?它比交叉编译简单得多,而且实际上可以在同一环境中进行测试。@cmannett85,一般来说,维护这两个开发环境会带来很大的开销。当然,在这两种平台上进行测试是必要的,但我们只希望在Linux上进行开发。作为一个跨3个操作系统跨3个开发环境工作的人,并且为ARM交叉编译的人,我向您保证不会有“大开销”。正如@Nejat所指出的,您不会在Windows上开发,只需构建和测试。@cmannett85。其实没那么简单。我没有描述整个问题,因为现在我只需要知道其中的一部分。当前系统涉及与自定义源代码管理系统集成的自定义生成系统。任何改变都会影响到很多开发人员。我不使用QT,但是我在Linux上使用INWW-W64在Linux上跨出一个大型C++项目(基于CLAN/LLVM的ELSCC开发环境)。我通过静态链接所有东西来解决DLL问题。你在回答这个问题吗?我想在Linux上运行GCC,以生成在windows上运行的可执行文件。这就是我想知道的。