我可以在Linux中编译Windows C控制台应用程序(.exe)吗? (更具体地说,Ubuntu)
我很久以前就听过交叉编译器,但当时我对它们并不感兴趣。
祝你好运
答案 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。
答案 7 :(得分:0)
你也可以在linux的终端使用标准的gcc,你可以使用你需要的相同的程序只用unistd.h更改std.h(意味着你需要更改为linux特定的库)。 我在学校有一个关于linux编程的课程,除了它是关于ubuntu和库输入/输出的更改以及一些线程相关的linux特定的,都是一样的
示例:gcc -c myprogram.c //进行编译 gcc -o myprogram.o名称来制作lib myprogram //带有参数,如果有任何