2009-12-04 64 views
5

我有一些非常简单的命令行程序的源代码。我正在考虑在Linux机器上编译它们的选项(它们在此处已发布),因此可以在Windows上使用它们。如果我没有错,这就是所谓的交叉编译。我从来没有尝试过,但昨天读了一些信息,似乎有点复杂或不成功。我想听听你的意见,我怎样才能移植一个简单​​的“hello world”程序,它使用g ++在Linux上编译。交叉编译C++;从Linux到Windows,它真的有用吗?

感谢

回答

7

看为mingw,在Linux上构建Win32应用程序的工具套件。如果程序不依赖于mingw不支持的任何特定于Linux的功能,则应该没问题。

+0

怎样才能下载windows的整个migwin系统? 从这里我只看到MinGW的的各个部分的列表: HTTP:// sourceforge上。net/projects/mingw/files/ – flow 2009-12-17 13:31:45

+0

问题解决了 我的愧疚原因是我从linux访问网站的事实。从Windows机器直接获取setup.exe安装程序 – flow 2009-12-17 13:37:11

0

是的。我们目前正在编译一个250 kloc应用程序,每天运行Qt。它每天都工作得很好,虽然我不得不承认它不是在公司外部发布的,但只用于内部。对于官方发布,Visual Studio是首选。

使用Debian的MinGW的标准包编译。

1

我每天交叉编译。但我没有每天设置交叉编译器。这可能会很棘手,但这当然是可能的。

1

只要你使用标准的C++代码将是跨平台的。您还可以使用跨平台的库,例如STL,升压,波科,QT等...

只有当你开始使用特定于平台的代码,你失去了便携性。例如,包括<windows.h>将使您的代码只能在Windows上编译。 (这种情况有解决的技术像的#ifdef宏。这使某些代码部分只在一个平台上。)

因此,一个简单的Hello World程序应该在Linux,Mac,Windows或其它任何平台上运行。你不需要任何特别的东西。

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

编辑:
如果你想设置一个交叉编译系统,那么我建议你看看cmake

4

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

前者是相当困难的(但不是不可能的),后者很容易,使用诸如MinGW的编译器,其他人已经提到过。

相关问题