Как вызвать кросс-компилятор MinGW в Linux? - программирование
Подтвердить что ты не робот

Как вызвать кросс-компилятор MinGW в Linux?

У меня есть проект, который я хочу кросс-компиляции для Windows. У меня есть соответствующий Makefile, и все работает с g++. Я бегал

$ apt install mingw-w64

и скачал 500 МБ пакетов, но я не могу узнать, как на самом деле запустить его. Исполняемого файла mingw не существует, так как мне на самом деле скомпилировать его?

4b9b3361

Ответ 1

Если вы посмотрите на списки файлов на веб mingw-w64 пакетов Ubuntu для составных пакетов mingw-w64:

Вы можете видеть, что mingw-w64 предоставляет набор инструментов, то есть набор альтернативных инструментов (компилятор, компоновщик, заголовки и т.д.), Используемых для компиляции кода для другой системы.

Предполагая, что вы хотите скомпилировать код C++ для 64-битной системы, вам нужно использовать /usr/bin/x86_64-w64-mingw32-g++-win32. Вы можете использовать переменную окружения CXX чтобы сказать большинству Makefile-ов использовать этот компилятор для компиляции кода.

Ответ 2

Я использовал это для перекрестного компиляции postgres:

$ sudo apt-get install mingw-w64
$ ./configure --host=i686-w64-mingw32 --without-zlib #  32 bit
# or --host=x86_64-w64-mingw32  64 bit

ref здесь

Другие проекты делают это по-другому, например ffmpeg:

 ./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32-

или некоторые

  ./configure CC=i686-w64-mingw32-gcc ...

и т.д.. GL!

Ответ 3

Еще один вариант - взглянуть на Mingw Cross Environment (MXE), который специально нацелен на кросс-компиляцию из Linux в Windows (и в последнее время также к Mac). Пакет имеет bult-in xupport для большого количества библиотек и активно разрабатывается. Просто взгляните на сайт, чтобы узнать, подходит ли он для ваших нужд.

Кстати, предлагается использовать версию, а не версию. Это связано с тем, что версии релизов, как правило, устарели очень быстро, из-за того, что сторонники пакетов (из библиотек) меняют URL-адреса, что приводит к нарушению версии выпуска MXE. Версия разработки, как правило, более актуальна.