C++ 交叉编译C++;;从Linux到Windows,它真的有效吗?

C++ 交叉编译C++;;从Linux到Windows,它真的有效吗?,c++,cross-platform,C++,Cross Platform,我有一些非常简单的命令行程序的源代码。我正在考虑在Linux机器上编译它们(它们是在这里开发的),这样它们就可以在Windows上使用。如果我没有错的话,这叫做交叉编译。我从未尝试过,但昨天读到一些信息,它似乎有点复杂或不成功。我想听听您的意见,以及如何移植一个简单的“hello world”程序,该程序使用g++在Linux上编译 感谢查找,这是一套用于在Linux中构建Win32应用程序的工具。如果程序不依赖于mingw不支持的任何特定于Linux的功能,您应该不会有问题。是的。我们目前正在

我有一些非常简单的命令行程序的源代码。我正在考虑在Linux机器上编译它们(它们是在这里开发的),这样它们就可以在Windows上使用。如果我没有错的话,这叫做交叉编译。我从未尝试过,但昨天读到一些信息,它似乎有点复杂或不成功。我想听听您的意见,以及如何移植一个简单的“hello world”程序,该程序使用g++在Linux上编译


感谢

查找,这是一套用于在Linux中构建Win32应用程序的工具。如果程序不依赖于mingw不支持的任何特定于Linux的功能,您应该不会有问题。

是的。我们目前正在编译一个250 kloc的应用程序,每天运行Qt版本。它每天都在完美地工作,尽管我不得不承认它不是在公司外部发行的,而是在公司内部使用的。对于官方版本,首选Visual Studio


使用Debian上的mingw标准包编译。

我每天交叉编译。但我不会每天设置交叉编译器。它可能是棘手的,但它确实是可能的。

< P>只要你使用标准C++,你的代码将是跨平台的。您还可以使用跨平台库,如STL、boost、Poco、Qt等

只有当您开始使用特定于平台的代码时,您才会失去可移植性。例如,包含
将使您的代码只能在Windows上编译。(这方面有一些技术,比如#ifdef宏。它只在一个平台上启用某些代码部分。)

因此,一个简单的hello world程序应该可以在Linux、Mac、Windows或任何其他平台上运行。你不需要什么特别的东西

注:
有些人可能会提到Cygwin或mingw32。我将简要解释它们是什么:
Cygwin允许您在Windows机器上使用gcc/g++编译Linux应用程序。
Mingw32允许您在Windows计算机上使用gcc/g++编译Windows应用程序

编辑:

如果您想为交叉编译设置一个系统,那么我建议您看看。

请注意,交叉编译与跨平台不是一回事。通过交叉编译,您可以将代码编译为Linux机器上的Windows可执行文件,然后将可执行文件传输到Windows机器。通过跨平台,您可以将源代码传输到Windows框,并使用Windows编译器编译为Windows可执行文件


前者相当困难(但并非不可能),后者非常简单,使用其他人提到的MinGW等编译器。

如何下载整个migwin windows系统?从这里我只看到了mingw的各个部分的列表:这个问题解决了我的愚蠢,因为我从linux访问了这个网站。从windows计算机直接获得setup.exe安装程序