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

时间:2009-11-25 20:09:41

标签: c windows ubuntu

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

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

祝你好运

8 个答案:

答案 0 :(得分:14)

this post提供了一些信息,以及duplicate question

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

apt-get install mingw32

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

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

答案 1 :(得分:3)

如果它是标准C,则可以使用Windows库。

C代码本身非常便携,标准C库(libc)几乎无处不在。如果您的代码执行printf()和sscanf()以及fopen()等,那么它将在另一个平台上编译并运行。 Windows,Linux,BSD等

库是其他而不是libc引入了可移植性挑战。

任何与Windows特定平台库链接的内容都很麻烦。 Kernel32.lib,user32.lib等等

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

如果您将自己局限于libc和库调用到便携式库中,那么您将拥有一个可移植的C应用程序。

答案 2 :(得分:0)

如果您正在讨论严格的ANSI C应用程序,那么在Linux平台上使用gcc编译时应该没有任何问题。

如果您喜欢使用Windows系统库,那么您需要使用* nix系统等效项(如果有的话)替换这些调用。

答案 3 :(得分:0)

如果您希望将程序从Linux编译成Windows可执行文件,那么可以选择交叉编译器。 http://www.airs.com/ian/configure/configure_5.html对我有所帮助。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

您可以使用WINE并安装VS。其他解决方案使用MonoDevelop 你也可以使用像Code::Blocks

这样的交叉编译器

答案 6 :(得分:0)

可以进行交叉编译。 AFAIK你得到一个Windows可执行文件,当然它将在windows下运行(可能还有WINE)。

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

一个教程here。 MingW交叉编译页面为here

答案 7 :(得分:0)

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

示例:gcc -c myprogram.c //进行编译           gcc -o myprogram.o名称来制作lib           myprogram //带有参数,如果有任何