Durante el desarrollo, ¿qué se debe hacer para trasplantar el software de juegos de Linux a Windows?
Primero, debe realizar un trabajo de preparación, instalar la última versión de Cygwin en la plataforma Windows e instalar GCC y otras herramientas de desarrollo en Cygwin. También necesita un entorno de desarrollo de Windows. Puede utilizar la última versión de Visual Studio, que es Microsoft Visual Studio .NET 2003. Esta versión es la 1.13, obtenida del último código fuente de Tar en www.gnu.org. Descomprima el paquete tar-1.13.tar.gz.source en Cygwin. NOTA No utilice los paquetes de descompresión WINRAR o WINZIP en Windows. WINRAR y WINZIP tienen problemas al descomprimir ciertos paquetes tar.gz. Esto puede provocar excepciones en directorios y archivos descomprimidos. Si se trata de un paquete de código fuente, es posible que no se compile correctamente en Cygwin. Después de descomprimir, vaya al directorio tar-1.13 y escriba el comando
./configure
. Después de ejecutar el comando, escriba
make
. nuevamenteComando. Comience a compilar la versión Cygwin de tar.
Básicamente, no habrá problemas con el trabajo de compilación. Puede ingresar al directorio src para ver el programa tar tar.exe recién compilado.
Cygwin es un entorno de simulación de Linux con capa API. Si puede compilar y ejecutar bajo Cygwin. De hecho, también se puede compilar y ejecutar en Windows, pero requiere una API intermedia para simular ciertas operaciones específicas de Linux. Una manera fácil de saber si un programa de Linux se puede migrar a Windows es ver si el código fuente se compila y se ejecuta en Cygwin.
Compilar el código fuente de Tar en Cygwin es sólo una de las razones para determinar si es portátil. Otra razón es que el proceso de portar el código requiere un archivo de encabezado especial, config.h. config.h es el archivo de código fuente más importante durante el proceso de migración. El archivo config.h no forma parte del código fuente en sí, pero se incluye en Cygwin cuando se ejecuta el comando "./configure" en Cygwin. Ejecutar el comando "./Configure" en Cygwin generará el archivo config.h de acuerdo con el entorno de desarrollo de la plataforma Cygwin. Durante el proceso de compilación, el archivo config.h también es necesario para controlar los elementos de compilación del código. La portabilidad también se basa en el archivo config.h.
El siguiente paso es construir el proyecto de Windows. Utilice Visual Studio .NET 2003 para crear un proyecto vacío llamado WinTar. Según el resultado de la compilación Cygwin, el código Tar principal se encuentra en los directorios Src y lib. Copie estos dos directorios en un nuevo proyecto y agregue el código al proyecto. Luego copie Config.h al directorio del proyecto WinTar.
El trabajo de preparación básicamente está completado y el siguiente paso es el trasplante. El proceso de trasplante se puede dividir en tres partes.
Tres. El primer objetivo: hacer que WinTar sea compilable (compilador)
La consecución del primer objetivo se logra principalmente en torno a Config.h.
Una diferencia importante entre el entorno de desarrollo de Linux y el entorno de desarrollo de Windows radica en las diferencias en los archivos de encabezado de la biblioteca C y en las diversas definiciones. Config.h proporciona un cambio de compilación completo para manejar las diferencias causadas por diferentes entornos de desarrollo entre diferentes plataformas. Este archivo ahora debe modificarse manualmente para adaptar el código fuente de Tar a la plataforma Windows.
El primer paso es ajustar la inclusión de los distintos archivos de encabezado de la biblioteca C. Hay muchas definiciones similares a HAVE_XXXX_H en Config.h. Por ejemplo, definir HAVE_CONFIG_H como 1 significa que config.h se puede usar en el proyecto.
#define HAVE_MALLOC_H 1 significa que el archivo de encabezado Malloc.h se puede utilizar en el proyecto. Al ajustar estos valores de definición, puede eliminar algunas inclusiones de archivos de encabezado que no están disponibles en las plataformas Windows. Puede haber muchas relaciones de inclusión de archivos de encabezado que deban manejarse en otros lugares, pero la definición aquí básicamente resuelve la mayoría de los problemas de inclusión de archivos de encabezado.
/* Define si tiene el archivo de encabezado lt;linux/fd.hgt; */
/* #undef HAVE_LINUX_FD_H */
/* Define si hay un archivo de encabezado lt; locale.h gt; */
#define HAVE_LOCALE_H 1
/* Define si hay un archivo de encabezado #define HAVE_MALLOC_H 1 /* Define si hay un archivo de encabezado #define HAVE_MEMORY_H 1 /* Define si hay un archivo de encabezado lt;ndir.hgt; */ /* #undef HAVE_NDIR_H *//p> El segundo paso es ajustar las definiciones de varios tipos de datos. Puede haber muchas definiciones de tipos de datos especiales en Linux. El archivo Config.h contiene algunas definiciones de tipos de datos que se pueden cambiar. Estas definiciones suelen ser redefiniciones de tipos de datos básicos. Se pueden adaptar según las definiciones de tipos de datos en la plataforma Windows. Por ejemplo, hay un tipo de datos mode_t en el entorno de desarrollo Cygwin que no se puede encontrar en la biblioteca C de Visual Studio (el autor tiene los pies en la tierra, comuníquese con jackforce al 163 punto com). Config.h proporciona un modificador que permite a los desarrolladores cambiar la definición de mode_t y sugiere que si mode_t no está definido en lt;sys/types.hgt;, se puede definir como un tipo int. Por lo tanto, agregue #define mode_t int en config.h, lo que resuelve el problema de que mode_t no esté definido. Otros tipos de datos se manejan de la misma manera.