Как скомпилировать exe для Windows на Linux (C, C++)

Если вдруг понадобится на линуксе кросскомпилить бинарник под Windows, вот инструкция:

$ sudo apt install mingw-w64
$ i686-w64-mingw32-g++ -static-libgcc -static-libstdc++ FILE.cpp
где FILE.cpp — файл с компилируемым кодом

Да, и еще сначала из непонятно чего FILE.cpp перевести в UTF-8, иначе компиляторы сходят с ума (в Kate: Файл->Сохранить в другой кодировке).

Статическая линковка (-static-libgcc -static-libstdc++) нужна, чтобы не было ошибок, как на скриншоте. i686-w64-mingw32-g++ скомпилирует 32-битный исполняемый файл из кода на C++, в той же папке на выходе будет файл a.exe, с помощью команды
$ file a.exe
можно убедиться, что это действительно, например, «PE32 executable (console) Intel 80386, for MS Windows».
i686-w64-mingw32-gcc скомпилирует код на Си.

Если кто любит понапихать кучу лишних библиотек через #define, то все лишние тоже надо удалить. На packages.ubuntu.com во второй поисковой форме можно по имени файла, например, conio.h, искать, в какой пакет из репозиториев входит библиотека, пример: https://packages.ubuntu.com/search?mode=exactfilename&suite=bionic&section=all&arch=any&keywords=conio.h&searchon=contents

Отправить ответ

avatar
  Subscribe  
Сообщать по почте