如何使用带有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。