如何使用带有Linux子系统的GCC编译Windows的可执行文件?

Windows 10周年更新包括适用于Ubuntu的Linux子系统。 我用sudo apt-get install gcc

我为测试目的写了一些简单的C代码:

 #include  int main(void){ printf("Hello\n"); return 0; } 

并使用gcc -c main.c编译它,但生成了execute(仅限Linux) main.o 。 如果我运行它./main.o ,它会显示Hello

我的问题是,如何编译main.c以便Windows可以运行它? 基本上,如何在Linux子系统中使用GCC生成*.exe文件?

Linux子系统用作Linux计算机。 您只能在其中运行Linux可执行文件,默认gcc会创建Linux可执行文件。

要创建Windows可执行文件,您需要安装mingw交叉编译器:

 sudo apt-get install mingw-w64 

然后,您可以创建32位Windows可执行文件:

 i686-w64-mingw32-gcc -o main32.exe main.c 

和64位Windows可执行文件:

 x86_64-w64-mingw32-gcc -o main64.exe main.c 

请注意,这些Windows可执行文件在Linux子系统内部不起作用,仅在其外部。

如果你在linux上使用gcc进行编译,它将产生一个ELF文件,而不是PE(windows懂的)文件

要在linux中编译windows程序,你可以使用mingw。