75 votes

Comment compiler l'exécutable pour Windows avec GCC avec le sous-système Linux?

Windows 10 Anniversaire de la mise à Jour inclut le sous-système Linux pour Ubuntu. J'ai installé gcc avec sudo apt-get install gcc.

J'ai écrit quelques simples C du code 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écuter (Linux uniquement) main.o est généré. Si je le lance en ./main.o, il affiche Hello.

Ma question est, comment puis-je compiler main.c afin que Windows puisse l'exécuter? En gros, comment pouvez-vous générer un *.exe le fichier avec GCC sous Linux sous-système ?

129voto

Markus Laire Points 1837

Linux sous-système fonctionne comme un Linux-ordinateur. Vous pouvez uniquement exécuter Linux exécutables à l'intérieur et à défaut gcc crée Linux exécutables.

Pour créer les exécutables Windows, vous devez installer mingw cross-compilateur:

sudo apt-get install mingw-w64

Vous pouvez ensuite créer des 32-bits de Windows exécutable avec:

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

Et 64-bit de Windows exécutable avec:

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

Notez que ces exécutables Windows ne fonctionnera pas à l'intérieur de sous-système Linux, uniquement à l'extérieur de l'il.

8voto

david Points 61

Si vous compilez en utilisant gcc sur linux, cela produira un fichier ELF et non un fichier PE (ce que Windows comprend)

Pour compiler un programme pour Windows sous Linux, vous pouvez utiliser mingw.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X