Windows y Linux son dos sistemas muy diferentes, y como tal, a menudo no es fácil portar programas escritos para uno y otro, especialmente cuando se trata de programas GUI. Aunque hay muchas bibliotecas y SDKs diferentes entre plataformas, los programas nativos escritos sin portabilidad en mente son bastante difíciles de portar.
Cuando se trata de compilar y ejecutar programas escritos para Linux en Windows, existe una solución conocida como Cygwin. El proyecto Cygwin es una colección de las herramientas y compiladores más comunes (incluyendo la shell bash y la cadena de compiladores GNU) para Windows. También incluye una librería que proporciona una capa de compatibilidad para que se puedan compilar programas que llamen a APIs específicas de Linux. Cygwin no es un emulador o una máquina virtual, y no es necesario ejecutar binarios de Linux en Windows sin antes haber sido recompilado.
Visite la página de instalación de Cygwin y descargue el ejecutable de configuración de 32 ó 64 bits (según la variante de Windows que utilice). Ejecutar el programa de setup. Haga clic en Siguiente y Siguiente de nuevo (para «Instalar desde Internet»). El directorio por defecto es «C:cygwin». Se puede cambiar si es necesario, pero a menos que tenga una razón específica para cambiarlo, el valor predeterminado es el mejor. Haga clic en Siguiente, Siguiente y Siguiente de nuevo.
El proyecto Cygwin tiene sitios espejo en todo el mundo; elija el que crea que mejor se adapte a su ubicación y haga clic en Siguiente. Ahora tiene que elegir qué paquetes instalar. Para compilar programas Linux simples en Windows, necesitará la Cadena de Compiladores GNU (GCC) que proporciona un compilador de aC y C++.
Escriba «gcc» en el cuadro de búsqueda y luego haga clic en el signo más pequeño junto a «Devel» en la lista de paquetes. Busque «gcc-core» y «gcc-g++» y haga clic en «Skip» para cada uno de ellos. La palabra «Skip» se convertirá en un número de versión y el signo «n/a» en la columna «Bin? Escriba «make» en el cuadro de búsqueda y busque «make» en «Devel. Haga clic en «Saltar» para marcarlo para install.Search para «wget» y también marcarlo para install desde «Web». Para construir el ejemplo de abajo, también necesitaremos «libiconv;» buscarlo y marcarlo para instalarlo.
Haga clic en Siguiente. El instalador verá entonces qué otros paquetes necesitan ser instalados para resolver cualquier dependencia. Haga clic en Siguiente para aceptar las recomendaciones.
Una vez que todos los paquetes hayan sido descargados e instalados, siga los últimos pasos hasta que el instalador salga. Inicie el «Cygwin Terminal» para entrar en el entorno de desarrollo similar a Linux. En el terminal no se utilizan comandos de Windows como «dir» sino comandos shell como «ls».
Para demostrar cómo compilar un programa Linux bajo Windows, usaremos el paquete HTML-XML del W3. Para ver lo que puede hacer, vea Cómo manipular archivos HTML y XML desde la línea de comandos .
Descargue los archivos fuente usando «wget»:
wgethttp://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz
Ahora descomprima el archivo de almacenamiento:
tar -zxfhtml-xml-utils-6.7.tar.gz
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
Los archivos fuente están ahora en el directorio «html-xml-utils-6.7». Entra en ese directorio:
cdhtml-xml-utils-6.7
Antes de que los archivos puedan ser construidos, necesita ejecutar el script de shell «configure» para generar el Makefile (las instrucciones de construcción) que son adecuadas para este entorno de construcción. Este es un paso común en Linux (y Cygwin) cuando se construyen paquetes desde el código fuente.
./configure
Una vez que «configure» haya terminado, puede iniciar la compilación usando «make»:
make
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>»»»»>>>>i
La construcción fallará parcialmente. Estaba indeciso sobre qué hacer a continuación. Podría cambiar a otro proyecto y construirlo desde su fuente o seguir adelante con las utilidades HTML-XML. He optado por este último, ya que muestra que no todo será un paseo en el parque cuando se intente compilar programas Linux bajo Cygwin. La solución a este problema en particular es simple. El mensaje de error muestra que el enlazador no puede encontrar la biblioteca «iconv». Un vistazo rápido al comando de enlace muestra que la biblioteca no está especificada. La solución rápida y sucia es ejecutar el comando manualmente y decirle al enlazador que use libconv. La forma «correcta» de arreglar esto sería empezar a indagar en el Makefile, etc. para averiguar por qué no está funcionando.
Ejecute el siguiente comando, observando la inclusión de «-liconv» al final:
gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectsock.o types.o tree.o genid.o dtd.o headers.o dict.o fopencookie.o -liconv>.
Una vez creado el archivo «hxindex.exe», puede continuar con el resto de la compilación escribiendo «make» de nuevo. La forma en que «make» funciona es comprobando lo que se ha construido y lo que no se ha construido, y luego continúa el proceso de construcción en el punto apropiado. Puesto que hemos construido manualmente «hxindex.exe», «make» sólo continúa con el siguiente binario de su lista.
Cuando «make» se complete, tendrá todos los archivos.exe en el directorio html-xml-utils-6.7.
Si te quedas atascado usando Cygwin deberías mirar en el FAQ , y en el documentación . En caso contrario, el proyecto tiene un conjunto de listas de correo mailing lists . Si tiene algún problema con los pasos descritos anteriormente, utilice la sección de comentarios que aparece a continuación.