2009-12-04 16 views
5

Tengo el código fuente para algunos programas de línea de comandos muy simples. Estaba considerando la opción de compilarlos en una máquina Linux (se desarrollaron aquí) para que puedan ser utilizados en Windows. Si no estoy equivocado esto se llama compilación cruzada. Nunca lo intenté, pero al leer ayer cierta información, parece ser algo complicado o no exitoso. Me gustaría conocer sus opiniones, y cómo podría portar un simple programa "hello world", que compila en Linux con g ++.Crosscompiling C++; de Linux a Windows, ¿realmente funciona?

Gracias

Respuesta

7

Mira en mingw, un conjunto de herramientas para crear aplicaciones Win32 en Linux. Si los programas no dependen de ninguna funcionalidad específica de Linux que no sea compatible con mingw, debería estar bien.

+0

¿cómo se puede descargar todo el sistema de migwin para Windows? desde aquí Solo veo una lista de las partes individuales de mingw: http: // sourceforge.net/projects/mingw/files/ – flow

+0

problema resuelto mi stupitdty como debido al hecho de que accedí al sitio web desde un Linux. desde una máquina de Windows obtienes directamente el instalador setup.exe – flow

0

Sí. Actualmente estamos compilando una aplicación de 250 kloc, ejecutando Qt con compilaciones diarias. Funciona perfectamente todos los días, aunque debo admitir que no se distribuye fuera de la compañía, sino que solo se usa internamente. Para versiones oficiales, se prefiere Visual Studio.

Compilado utilizando paquetes estándar de mingw en Debian.

1

Realizo una compilación cruzada todos los días. Pero no configuro compiladores cruzados a diario. Puede ser complicado, pero ciertamente es posible.

1

Siempre que use C++ estándar, su código será multiplataforma. También puede usar bibliotecas multiplataforma como STL, boost, Poco, Qt, etc.

Solo cuando comienza a usar el código específico de la plataforma, pierde la portabilidad. Por ejemplo, incluir <windows.h> hará que su código solo sea compilable en Windows. (Existen técnicas como la macro #ifdef. Esto habilita ciertas porciones de código solo en una plataforma.)

Así que un programa hello world simple debería funcionar en Linux, Mac, Windows o cualquier otra plataforma. No necesitas nada especial para esto.

Nota:
Algunos pueden mencionar Cygwin o mingw32. Explicaré brevemente qué son:
Cygwin le permite compilar aplicaciones Linux usando gcc/g ++ en una máquina con Windows.
Mingw32 le permite compilar aplicaciones de Windows usando gcc/g ++ en una máquina con Windows.

Editar:
Si desea configurar un sistema para la compilación cruzada, entonces le recomiendo que eche un vistazo a cmake.

4

Tenga en cuenta que la compilación cruzada no es lo mismo que la multiplataforma. Con la compilación cruzada, compila el código en un ejecutable de Windows en el cuadro de Linux, luego transfiere el ejecutable a un cuadro de Windows. Con multiplataforma, transfiere el código fuente al cuadro de Windows y compila a un ejecutable de Windows utilizando un compilador de Windows.

El primero es bastante difícil (pero no imposible), este último es muy fácil, utilizando un compilador como MinGW, otros han mencionado.

Cuestiones relacionadas