2010-01-07 28 views
6

Estoy desarrollando una aplicación que deberá ejecutarse tanto en Windows como en Linux.Compilación cruzada en Windows y Linux

Hasta ahora lo tengo funcionando en Linux usando GCC 4.4.1 usando mi Makefile.

Sin embargo, también necesito compilar en Windows. El código fuente se compilará en Windows, ya que he # definido todas las áreas del código que separan los diferentes compiladores. Es decir .:

#ifdefined (LINUX) 
/* Do linux stuff */ 
#else 
/* Do windows stuff */ 
#endif 

Y hasta ahora el código es muy simple ya que estoy comenzando este programa. Básicamente, solo quiero probar mi idea.

Sin embargo, ¿es tan simple como compilar el código fuente en Linux?

Luego, cuando quiero compilar en Windows, puedo copiar los archivos a la plataforma de Windows. ¿Luego abro los archivos de código fuente en Visual Studio C++ y creo un proyecto y luego compilo para crear mi binario?

Respuesta

3

Using Visual C++ es una forma de construir su proyecto C en Windows. No es la única manera, sin embargo.

VC tiene archivos de proyecto que deberá crear. Pero luego tenga en cuenta que deberá mantener la configuración de compilación en dos lugares diferentes (haga & .vcproj).

Hay otras opciones también:

  • También puede utilizar make en Windows (por ejemplo, en Cygwin)
  • Hay nmake, msbuild, etc.
  • Usted podría también utilizar ant (que se trabajar en ambas plataformas).

Si yo fuera usted, trataría de utilizar la menor cantidad posible de herramientas de construcción diferentes.

3

Eche un vistazo a CMake también.

0

Sí. Es así de simple. Solo tenga en cuenta todo el tiempo que debe incluir todas las cosas específicas del sistema operativo en #ifdef s.

2

SCons es un excelente sistema de construcción multiplataforma. En lugar de escribir un Makefile, escribe un archivo SConstruct, que suele ser más simple y más potente. El comando scons (de forma predeterminada) se compila para el sistema operativo en el que se ejecuta, lo que brinda una forma sencilla de administrar compilaciones multiplataforma.

1

CMake puede ayudarlo a mantener su compilación portátil en varias cadenas de herramientas. Sin embargo, todavía tiene que lidiar con las incompatibilidades entre aquellos a nivel de lenguaje y biblioteca.

Por eso recomiendo usar GCC, las herramientas automáticas, etc. en todas las plataformas. En Windows, la cadena de herramientas GNU se llama MinGW/MSys. Mire MSysGit por un ejemplo.

2

Para aplicaciones de consola simples (y otras más complejas, como el marco de Qt) puede construir en Windows usando MinGW.Construir con MinGW es bastante similar a construir en Linux, y no es poco probable que pueda usar el mismo Makefile sin modificaciones o solo con modificaciones menores. Esto tiene la gran ventaja de que no necesita mantener dos conjuntos de Makefiles/archivos de proyecto.

También puede usar Cygwin, que básicamente es una capa de emulación de la API de Linux para la funcionalidad sustancial. Sin embargo, el uso de Cygwin tiene la desventaja de que se vincula a su propia biblioteca cygwin1.dll. Esto podría no ser un problema para usted, ya que puede enviar esta DLL con su programa. También puede suprimir el uso de esto utilizando la opción -mno-cygwin como opción de compilación para gcc/g++. Sin embargo, para algunas funcionalidades se requiere la funcionalidad cygwin1.dll.

Puedo recomendar MinGW para construir programas en Windows que hayan sido originalmente escritos para Linux. Estoy usando esto para varios programas de línea de comandos, y para aplicaciones de GUI estoy usando el Qt framework con el compilador MinGW. Si desea construir aplicaciones de GUI, definitivamente debe utilizar un marco de GUI independiente de la plataforma, ya que hace las cosas mucho más fáciles.

1

Puede usar MinGW para realizar compilaciones cruzadas de binarios de Windows directamente desde Linux. La mayoría de las distribuciones Linux populares ahora tienen paquetes MinGW disponibles que hacen esto muy sencillo.

Luego puede compilar todos sus binarios de Windows y Linux de una vez, en una máquina, desde un archivo Makefile. No hay necesidad de perder el tiempo intentando que GNU Make funcione correctamente en Windows, y mucho menos preocuparse por Visual Studio.

Cuestiones relacionadas