2010-01-09 131 views
67

me han escrito algunos efectos en C++ (g ++) usando freeglut en Linux, y yo las compilar con¿Cómo compilar para Windows en Linux con gcc/g ++?

g++ -Wall -lglut part8.cpp -o part8 

así que me preguntaba si es posible tener g ++ crea ejecutables de Windows compilados estáticas que contiene todo lo necesario?

no tengo Windows, por lo que sería muy fresco, si pudiera hacerlo en Linux :) existe

+4

@AndiDog, "Primera dosis gratis" , derecho. De todos modos, configurar el proceso de compilación automatizado en la máquina de Windows, mientras que tiene uno terminado y en funcionamiento para Linux, es innecesario. –

+0

¿Cómo probarías tu software de Windows sin Windows? ¿Usando vino? –

+3

@ el.pescado, la construcción y las pruebas son tareas completamente diferentes. Windows es innecesario para el primero. –

Respuesta

59

mingw32 como un paquete para Linux. Puede realizar una compilación cruzada y vincular las aplicaciones de Windows con ella. Hay un tutorial here at the Code::Blocks forum. Tenga en cuenta que el comando cambia a mingw32-gcc, por ejemplo.

EDIT: 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) 
... 
+2

Si usa debian, mingw32 ya está en el repositorio, junto con algunas bibliotecas precompiladas también. – liori

+0

Sí, solo lo agregué a mi publicación mientras escribía su comentario :) Thx – AndiDog

+0

para estar completo, también necesitaría proporcionar una biblioteca de glut compatible con mingw, ¿no? – Bahbar

5

He usado MinGW en Linux para hacer ejecutables de Windows en C, C++ Sospecho trabajaría también.

+3

........... ¿Cómo? –

+1

Desde que publiqué esa respuesta, he ido un poco más allá. 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 http://ellcc.org para encontrar los binarios precompilados para varios hosts Linux. –

20

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 el código, se puede usar algo como:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

Vas a veces desea probar el 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, ejecute:
sudo apt-get install wine

+4

no necesita especificar 'mingw32-binutils' y' mingw32-runtime' porque son dependencias de 'mingw32' – henje

+0

cool, el cpp tiene errores muy simples (' void main() {} 'etc ...), Supongo que se compila en Windows pero falla en mingw, los arreglé. Intenté también 'i586-mingw32msvc-cpp' y generó un archivo de texto con algo así como cosas para compilar jajaja ... ¡el g ++ uno funcionó, thx! –

3

Desde: https://fedoraproject.org/wiki/MinGW/Tutorial

partir de Fedora 17 es posible construir fácilmente binarios (cross-compilación) para los objetivos de Win32 y Win64. Esto se realiza utilizando la cadena de herramientas 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 el uso del compilador cruzado de Windows": https://fedoraproject.org/wiki/MinGW/Tips

1

para Fedora Es

sudo yum groupinstall -y "MinGW cross-compiler" 
7

Instalar un compilador cruzado, como mingw64 de su gestor de paquetes. A continuación, compile de la siguiente manera: en lugar de simplemente llamar a gcc llame al 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.

1

método sugerido me dio error en Ubuntu 16.04: E: Unable to locate package mingw32

================================ =========================

Para instalar esto paquete en Ubuntu por favor utilice siguiente:

sudo apt-get install mingw-w64 

Después de instalar que se puede utilizar:

x86_64-w64-mingw32-g++ 

¡Tenga en cuenta!

Para el uso de 64 bits: x86_64-w64-mingw32-gC++

Para el uso de 32 bits: i686-w64-mingw32-g ++

Cuestiones relacionadas