Comment compiler exécutable Pour Windows avec GCC avec sous-système Linux?

Windows 10 Anniversary Update inclut le sous-système Linux Pour Ubuntu. J'ai installé gcc avec sudo apt-get install gcc.

J'ai écrit un code C simple à des fins de test:

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

Et compilé avec gcc -c main.c, mais l'exécuter (Linux uniquement) main.o est généré. Si je l'exécute ./main.o, il affiche Hello.

Ma question Est, Comment puis-je compiler main.c afin que Windows puisse l'exécuter? Fondamentalement, comment générez-vous un fichier *.exe avec GCC dans le sous-système Linux ?

28
demandé sur Rakete1111 2016-08-05 12:35:25

2 réponses

Le sous-système Linux fonctionne comme un ordinateur Linux. Vous ne pouvez exécuter que des exécutables Linux à l'intérieur et default gcc crée des exécutables Linux.

Pour créer des exécutables Windows, vous devez installer MinGW cross-compiler:

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 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 à L'intérieur du sous-système Linux, seulement en dehors de celui-ci.

44
répondu Markus Laire 2016-08-05 11:52:37

Si vous compilez en utilisant gcc sous linux, il produira un fichier ELF pas un fichier PE (ce que Windows comprend)

Pour compiler un programme pour windows dans linux, vous pouvez utiliser mingw.

6
répondu david 2016-08-05 10:31:01