c++ - compiler - ¿Cómo compilar para Windows en Linux con gcc/g++?
gcc linux (7)
He escrito algunos efectos en C ++ (g ++) usando freeglut en Linux, y los compilo con
g++ -Wall -lglut part8.cpp -o part8
Entonces, me preguntaba si es posible tener g ++ make executables estáticos de Windows que contengan todo lo necesario.
No tengo Windows, así que sería genial si pudiera hacerlo en Linux :)
De: https://fedoraproject.org/wiki/MinGW/Tutorial
A partir de Fedora 17 es posible construir fácilmente binarios (compilación cruzada) para los objetivos win32 y win64. Esto se realiza utilizando la herramienta toolchain mingw-w64: http://mingw-w64.sf.net/ . El uso de esta herramienta le permite construir binarios para los siguientes lenguajes de programación: C, C ++, Objective-C, Objective-C ++ y Fortran.
"Consejos y trucos para usar el compilador cruzado de Windows": https://fedoraproject.org/wiki/MinGW/Tips
El método sugerido me dio error en Ubuntu 16.04: E: no se pudo ubicar el paquete mingw32
=============================================== ======================
Para instalar este paquete en Ubuntu, use lo siguiente:
sudo apt-get install mingw-w64
Después de la instalación, puede usarlo:
x86_64-w64-mingw32-g++
¡Tenga en cuenta!
Para uso de 64 bits: x86_64-w64-mingw32-gc ++
Para uso de 32 bits: i686-w64-mingw32-g ++
He usado mingw en Linux para hacer ejecutables de Windows en C, sospecho que C ++ también funcionaría.
Tengo un proyecto, ELLCC, que reúne clang y otras cosas como una cadena de herramientas de compilación cruzada. Lo uso para compilar clang (C ++), binutils y GDB para Windows. Siga el enlace de descarga en ellcc.org para ver los binarios precompilados para varios hosts Linux.
Instale un compilador cruzado, como mingw64 desde su administrador de paquetes. A continuación, compile de la siguiente manera: en lugar de simplemente llamar a gcc
llame a i686-w64-mingw32-gcc
para Windows de 32 bits o x86_64-w64-mingw32-gcc"
para Windows de 64 bits. También usaría la opción --static
, ya que el sistema de destino puede no tener todas las bibliotecas.
Si desea compilar otro idioma, como Fortran, reemplace -gcc
con -gfortran
en los comandos anteriores.
Una opción de compilación para Windows en Linux es a través de mingw. Encontré un tutorial muy útil here .
Para instalar mingw32 en sistemas basados en Debian, ejecute el siguiente comando:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
Para compilar su código, puede usar algo como:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp
A veces querrás probar la nueva aplicación de Windows directamente en Linux. Puede usar vino para eso, aunque siempre debe tener en cuenta que el vino podría tener errores. Esto significa que puede que no esté seguro de que haya un error en el vino, en su programa o en ambos, por lo que solo debe usar vino para las pruebas generales.
Para instalar el vino, ejecuta:
sudo apt-get install wine
mingw32 existe como un paquete para Linux. Puede realizar una compilación cruzada y vincular las aplicaciones de Windows con ella. Hay un tutorial aquí en el foro Code :: Blocks . mingw32-gcc
cuenta que el comando cambia a mingw32-gcc
, por ejemplo.
EDITAR: Debian Linux, por ejemplo, tiene MinGW en sus repositorios:
$ 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)
...
para Fedora es
sudo yum groupinstall -y "MinGW cross-compiler"