Как скомпилировать исполняемый файл для Windows с GCC с подсистемой Linux?
Обновление для Windows 10 Anniversary включает подсистему Linux для Ubuntu. Я установил gcc с sudo apt-get install gcc
.
Я написал простой C-код для тестирования:
#include <stdio.h>
int main(void){
printf("Hello\n");
return 0;
}
И скомпилировал его с помощью gcc -c main.c
, но сгенерирован execute (только для Linux) main.o
. Если я запустил его ./main.o
, он отобразит Hello
.
Мой вопрос в том, как я могу скомпилировать main.c
, чтобы Windows могла запускать его? В принципе, как вы создаете файл *.exe
с GCC в подсистеме Linux?
Ответы
Ответ 1
Подсистема 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, только за ее пределами.
Ответ 2
Если вы скомпилируете gcc на linux, он создаст файл ELF, а не файл PE (какие окна понимают)
Чтобы скомпилировать программу для windows внутри linux, вы можете использовать mingw.