La mise à jour anniversaire de Windows 10 inclut le sous-système Linux pour Ubuntu. J'ai installé gcc avec Sudo apt-get install gcc
.
J'ai écrit du code C simple à des fins de test:
#include <stdio.h>
int main(void){
printf("Hello\n");
return 0;
}
Et compilé avec gcc -c main.c
mais l'exécutable (Linux uniquement) main.o
est généré. Si je le lance ./main.o
, il affiche Hello
.
Ma question est, comment puis-je compiler main.c
pour que Windows puisse l'exécuter? Fondamentalement, comment générez-vous un *.exe
Fichier avec GCC dans le sous-système Linux?
Le sous-système Linux fonctionne comme un ordinateur Linux. Vous ne pouvez y exécuter que des exécutables Linux. Par défaut, gcc
crée des exécutables Linux.
Pour créer des exécutables Windows, vous devez installer le compilateur croisé mingw:
Sudo apt-get install mingw-w64
Ensuite, vous pouvez créer un exécutable Windows 32 bits avec:
i686-w64-mingw32-gcc -o main32.exe main.c
Et un exécutable Windows 64 bits avec:
x86_64-w64-mingw32-gcc -o main64.exe main.c
Notez que ces exécutables Windows ne fonctionneront pas dans le sous-système Linux, mais uniquement en dehors de celui-ci.
Si vous compilez en utilisant gcc sur linux, il produira un fichier ELF et non un fichier PE (ce que Windows comprend)
Pour compiler un programme pour Windows dans Linux, vous pouvez utiliser mingw.