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

时间:2009-12-04 10:43:05

标签: c++ cross-platform

我有一些非常简单的命令行程序的源代码。我正在考虑在Linux机器上编译它们的选项(它们在这里发布),因此可以在Windows上使用它们。如果我没有错,这称为交叉编译。我从未尝试过,但昨天阅读了一些信息,似乎有点复杂或不成功。我想听听你的意见,我怎么能找到一个简单的“hello world”程序,它在Linux上用g ++编译。

由于

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

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

前者非常困难(但并非不可能),后者非常容易,使用像MinGW这样的编译器,其他人已经提到过。

答案 2 :(得分:1)

我每天都要进行交叉编译。但是我不会每天设置交叉编译器。这可能很棘手,但肯定是可能的。

答案 3 :(得分:1)

只要您使用标准C ++,您的代码就会跨平台。您还可以使用跨平台库,如STL,boost,Poco,Qt等......

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

因此,一个简单的hello world程序应该适用于Linux,Mac,Windows或任何其他平台。你不需要任何特别的东西。

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

编辑:
如果要设置交叉编译系统,我建议您查看cmake

答案 4 :(得分:0)

是。我们目前正在编译一个250千字节的应用程序,运行Qt与每日构建。它每天都在完美地工作,虽然我承认它不是在公司外部分发,而只是在内部使用。对于官方发行版,首选Visual Studio。

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