bzip2 es una rutina de compresión de código libre. bzip2 es competitivo con las mejores técnicas estadísticas (PPM) en términos de compresión pero mucho más rápido. El código de bzip2 esta escrito en ansi c y no tiene dependencias, así que quise usarlo para probar varios enfoques para construir los ejecutables en Windows XP siendo una aplicación cuyo ambiente natural es Linux.
mingw
Una diferencia en el modelo de archivos entre Windows y Unix es como se determina si un archivo es ejecutable o no.
En unix los privilegios de ejecución de un archivo están definidos dentro de la estructura interna del archivo y existen utilerías como chmod que permiten manipular los privilegios de ejecución.
En Windows, la extensión de un archivo determina si es un ejecutable o no. los archivo ejecutables en Windows tiene la terminación .exe. Existen otras terminaciones de archivos ejecutables, pero si el archivo tiene un terminación que no este en la lista entonces no es un ejecutable. Dicho de otra manera, En Windows, la terminación de un archivo determina que aplicación (ejecutalbe) esta asociada con él.
Para crear el ejecutable de bizp2 usando mingw
Bajar las fuentes de bzip2
Modificar el archivo Makefile quitando las lineas que contengan la instrucción
chmod a+x
En el shell de msys ir al directorio de los fuentes de bzip2 y ejecutar el comando
make install
Visual Studio 2005 command prompt
En el shell de comandos de Visual Studio 2005 ir al directorio de los fuentes de bzip2 y ejecutar el comando
nmake -f makefile.msc
Al ejecutarse el nmake hay algunos warnings pero los ejecutables se generan bien
Visual Studio 2005 Proyecto Visual C++ win32
Abrir un nuevo proyecto del tipo libreria estatica con el nombre de salida libbz2.lib
Agregar los archivos
blocksort.c
huffman.c
crctable.c
randtable.c
compress.c
decompress.c
bzlib.c
bzlib.h
Construir la libreria
Abrir un nuevo proyecto del tipo consola
Agregar el archivo
bzip2.c
Agregar la referencia a libbz2.lib en los archivos de entrada del linker
construir el ejecutable