在Linux中编译Windows C控制台应用程序

我可以在Linux中编译Windows C控制台应用程序(.exe)吗? (更具体的说,Ubuntu

我很久以前听说过交叉编译器,但当时我并不感兴趣。

最好的祝福

有这个帖子给出了一些信息,以及这个重复的问题

当你使用Ubuntu时,你需要的软件包是(我认为) mingw32

 apt-get install mingw32 

然后用i586-mingw32msvc-gcc编译,例如

 i586-mingw32msvc-gcc helloworld.c -o helloworld.exe 

你可以,如果它是标准的C,并不使用Windows库。

C代码本身是非常便携的,标准的C库(libc)几乎在任何地方都可用。 如果你的代码是printf()和sscanf()和fopen()等等,那么它将会在另一个平台上编译和运行。 Windows,Linux,BSD等

除了libc之外,这些库还引入了可移植性方面的挑战。

任何与Windows专用平台库链接的东西都是麻烦的。 coreel32.lib,user32.lib等等

还有第三方库,如果用C编写的话,应该可以在Linux和Windows上使用。 PCRE就是一个很好的例子 – 这是一个使用C语言编写的正则表达式库,可以在Windows和Linux上使用。 这里有数百个图书馆。

如果将自己的libc和库调用限制在可移植的库中,那么您将拥有一个可移植的C应用程序。

如果你正在谈论一个严格的ANSI C应用程序,那么你不应该在Linux平台上用gcc编译任何问题。

如果你喜欢Windows系统库,那么你就会被弄糊涂,并且不得不用它们的* nix系统equivelants(如果有的话)来替换这些调用。

如果你想从Linux编译一个程序到Windows可执行文件,是的,交叉编译器是一个选项。 http://www.airs.com/ian/configure/configure_5.html帮了我一些。

你的意思是你可以在Linux上构建一个windows .exe(例如,在Linux上开发并将应用程序交付给Windows用户?)

或者你的意思是拿一个Windows应用程序,并重新编译(端口)到Linux,所以它是建立在Linux上运行?

您可以使用WINE并安装VS。其他解决方案使用MonoDevelop 。
你也可以使用Code :: Blocks之类的交叉编译器

交叉编译是可能的。 AFAIK你得到一个Windows可执行文件,这当然会运行在Windows(也可能是WINE)下。

有两种可能的选择:mingw和cygwin。

一个教程在这里 。 MingW交叉编译页面在这里 。

你也可以在linux终端中使用标准的gcc,你可以使用相同的程序,只需要用unistd.h来改变std.h(这意味着你需要改成linux特定的库)。 我有一个关于在学校的Linux编程的课程,除了在Ubuntu和库的输入/输出变化和一些线程相关的Linux特定的,所有这些都是一样的

例如:gcc -c myprogram.c //编译gcc -o myprogram.o名称使lib myprogram具有参数,如果有的话