Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compile executable for Windows with GCC with Linux Subsystem?

Tags:

c

bash

gcc

Windows 10 Anniversary Update includes the Linux Subsystem for Ubuntu. I installed gcc with sudo apt-get install gcc.

I wrote some simple C code for testing purposes:

#include <stdio.h> int main(void){     printf("Hello\n");     return 0; } 

And compiled it with gcc -c main.c but the execute (Linux only) main.o is generated. If I run it ./main.o, it displays Hello.

My question is, how can I compile main.c so that Windows can run it? Basically, how do you generate a *.exe file with GCC in Linux Subsystem ?

like image 882
Mikhail Avatar asked Aug 05 '16 09:08

Mikhail


People also ask

Can I compile Windows EXE on Linux?

mingw32 exists as a package for Linux. You can cross-compile and -link Windows applications with it. There's a tutorial here at the Code::Blocks forum. Mind that the command changes to x86_64-w64-mingw32-gcc-win32 , for example.


1 Answers

Linux Subsystem works as a Linux-computer. You can only run Linux executables inside it and default gcc creates Linux executables.

To create Windows executables, you need to install mingw cross-compiler:

sudo apt-get install mingw-w64 

Then you can create 32-bit Windows executable with:

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

And 64-bit Windows executable with:

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

Note that these Windows executables will not work inside Linux Subsystem, only outside of it.

like image 180
Markus Laire Avatar answered Sep 19 '22 09:09

Markus Laire