Как скомпилировать для Windows на Linux с gcc/g++?
Я написал некоторые эффекты в С++ (g++), используя freeglut в Linux, и скомпилирую их с помощью
g++ -Wall -lglut part8.cpp -o part8
Итак, мне было интересно, можно ли g++ сделать статические скомпилированные исполняемые файлы Windows, содержащие все необходимое?
У меня нет Windows, поэтому было бы здорово, если бы я мог сделать это в Linux:)
Ответы
Ответ 1
mingw32 существует как пакет для Linux. Вы можете перекрестно скомпилировать и связать приложения Windows с ним. Там есть учебник здесь, на форуме Code:: Blocks. Имейте в виду, что команда, например, изменяется на mingw32-gcc
.
EDIT: Debian Linux, например, имеет MinGW в своих репозиториях:
$ apt-cache search mingw
mingw32 - Minimalist GNU win32 (cross) compiler
mingw32-binutils - Minimalist GNU win32 (cross) binutils
mingw32-runtime - Minimalist GNU win32 (cross) runtime
gcc-mingw32 - The GNU Compiler Collection (cross compiler for MingW32)
...
Ответ 2
Один из вариантов компиляции для Windows в Linux - через mingw. Я нашел очень полезный учебник здесь.
Чтобы установить mingw32 в системах на базе Debian, выполните следующую команду:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
Чтобы скомпилировать ваш код, вы можете использовать что-то вроде:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp
Иногда вам нужно протестировать новое приложение Windows непосредственно в Linux. Вы можете использовать вино для этого, хотя вы всегда должны помнить, что у вина могут быть ошибки. Это означает, что вы не можете быть уверены, что ошибка в вине, вашей программе или и то, и другое, поэтому используйте только для общего тестирования.
Чтобы установить вино, запустите:
sudo apt-get install wine
Ответ 3
Установите кросс-компилятор, например, mingw64 из вашего диспетчера пакетов.
Затем выполните компиляцию следующим образом: вместо простого вызова gcc
вызов i686-w64-mingw32-gcc
для 32-разрядной Windows или x86_64-w64-mingw32-gcc"
для 64-разрядной Windows. Я также использовал бы параметр --static
, так как у целевой системы могут быть не все библиотеки.
Если вы хотите скомпилировать другой язык, например Fortran, замените -gcc
на -gfortran
в предыдущих командах.
Ответ 4
Я использовал mingw на Linux, чтобы сделать исполняемые файлы Windows на C, я подозреваю, что С++ тоже будет работать.
Ответ 5
От: https://fedoraproject.org/wiki/MinGW/Tutorial
В Fedora 17 можно легко создавать (кросс-компилировать) двоичные файлы для целей win32 и win64. Это реализовано с помощью инструментальной цепочки mingw-w64: http://mingw-w64.sf.net/. С помощью этой инструментальной цепочки вы можете создавать двоичные файлы для следующих языков программирования: C, С++, Objective-C, Objective-C ++ и Fortran.
"Советы и рекомендации для использования кросс-компилятора Windows": https://fedoraproject.org/wiki/MinGW/Tips
Ответ 6
для Fedora это
sudo yum groupinstall -y "MinGW cross-compiler"
Ответ 7
Предлагаемый метод дал мне ошибку в Ubuntu 16.04: E: Не удалось найти пакет mingw32
=============================================== ============================
Чтобы установить этот пакет на Ubuntu, пожалуйста, используйте следующее:
sudo apt-get install mingw-w64
После установки вы можете использовать его:
x86_64-w64-mingw32-g++
Обратите внимание!
Для 64-битного использования: x86_64-w64-mingw32-gС++
Для 32-разрядного использования: i686-w64-mingw32-g++