[C con Clase] MinGW sobre windows

Gilberto Cuba Ricardo gilberto.cuba en ucp.ho.rimed.cu
Mar Nov 9 01:18:15 CET 2010


Hola Armando.

> La duda que tengo es que si seria bueno usar MinGW para compilar
> ejecutables en windows de proyectos medianos, digamos un exe con unas pocas librerias?

Realmente el constructo bueno es bastante relativo, porque lo que
puede ser bueno para uno, puede ser malo para otro, pero te entiendo y
trataré de dar mi punto de vista al respecto.

Realmente yo no le veo donde pudiera estar lo malo en hacerlo, al
contrario, nos da la garantía que cuando compilamos algo con MinGW y
no tiene problemas, tendremos una compilación de igual forma sobre
Linux, exceptuando determinadas particularidades de los includes que
pueden ser únicos en un sistema y no estar en el otro.

La envergadura de los proyectos con los que he trabajado el MinGW
varían, aunque no son muchos, y te puedo garantizar que son bien
estables, de hecho me gustan más que los generados con Microsoft
Visual Studio, con el respeto de los usuarios que son amantes de las
herramientas de Microsoft, y ya verás después por qué fundamento esto.

> Hasta ahora, he manejado proyectos relativamente pequeños usando la
> API de windows, el requerimiento principal es que sea sea solo un
> exe y que se pueda ejecutar en windows xp y superiores.

A mi en lo particular no me gustaría trabajar directamente sobre la
API de Windows a no ser que fuera a hacer algo ya bien a fondo y que
sea solamente sobre Windows, y si fuera así, pues no utilizaría MinGW,
porque ¿quién mejor para manipular este tipo de cosas de la API de
Windows, que no fuera el propio Visual Studio de Microsoft?

A parte de lo de la API, si no fuera ese el caso, preferiría MinGW
como comenté anteriormente, porque me quito de encima tener que estar
cargando con las librarías (dlls) de C/C++ de Visual Studio que son
distribuibles y que son necesarias para la ejecución de tu programa
cuando este es compilado ya sea con VS2005, VS2008 o VS2010. En fin,
que encima de que tienes que hacerte tu propio programa y cargar con
tus cosas, también tienes que cargar con otra dependencia de la que te
está amarrando Microsoft; con MinGW me ahorro todo eso.

Y para dar contesta a tu otra pregunta, también es posible tener tu
librarías de forma estática y empaquetarlas en un solo archivo
ejecutable que es ejecutable en Windows XP y superiores.

> Para eso, use MinGW con el WDK 2003 y no me ha dado problemas hasta
> ahora; el detalle es que el ultimo proyecto que estamos
> desarrollando ya se esta volviendo grande, no le veo problemas en el
> código, sino en el compilador que usaremos.

Realmente yo hasta el momento no le he encontrado ningún problema a MinGW,
ahora, tampoco me creo con la suficiente capacidad como para eso, pero
a lo que me refiero es que todo lo que he hecho con él, me funciona de
maravillas e incluyo proyectos bien grandes. De MinGW podría decir
más, que es el GCC de Windows y que por ende es más cercano al
estándar de C/C++, por lo que puede que pases un poco de trabajo si
estás acostumbrado a programar con VS, principalmente como lo estoy
pasando yo en el tema de las plantillas (templates), aunque ahora
estoy descubriendo otras cosas de las que aún no estoy seguro como
para comentarlas.

> Me anime a usar visual c++ 6.0, pero encontré que algunas de las
> librerías que usaba generaban errores allí y por alguna razón el
> debugger se bloquea, luego probé vs2005 y encontré con el problema de necesitar el .net framework.

Esto es otra cosa, no podría decirte por qué daban errores tu
librerías, pero vs2005 es una buena opción, de hecho es muy bueno para
mí siempre que tengas el sp1 y aunque en su instalación te "obligue" a
instalar el Framework .NET, las aplicaciones que generes, no
necesariamente deben utilizarlo, solamente aquellas en la que hagas
referencia a él, y no podría decirte más porque no he trabajado con
él. Del debuguer del VS te puedo decir que me quito el sombrero y
conmigo todos los otros debuguer que aparezcan, gdb (MinGW) se quedó
corto con todas las funcionalidades del debuguer de Microsoft y con la
estabilidad en la información que muestra además de tenerlo integrado
a un excelente IDE como el de VS.

Resumiendo, que puedes hacer tus aplicaciones ejecutables con todas la
librerías que quieras en VS2005 y no hacer dependencia del .NET y
también que corran en Windows XP y superiores.

> Probe con Qt, pero me parece que seria el mismo problema que con vs
> 2005, necesitaria instalar qt framework.

Realmente hace tiempo que me desvinculé del qt y cambia bastante
rápido por la fuerte comunidad de programadores que tiene y el soporte
que Nokia le da, pero no sabría decirte si qt tiene un framework, a no
ser que se considere a Qt completo con sus 10 o 12 librerías cuando más,
o sus 3 librerías cuando menos, como un framework. Si fuera esto el
framework, la dependencia de las 3 librerías, no sería un problema,
porque hasta yo sufriría con ellas y las empaquetaría juntas a mi
ejecutable, cosa que a mi entender, no puedes hacer con el .NET;
además valdría la pena por la funcionalidad que le dan a la
aplicación.

Sin embargo, hace tiempo, leyendo y leyendo, encontré que las
librerías de Qt se podían recompilar estáticas y que por ende
tendríamos un adelanto y se podían incluir dentro del ejecutable,
aunque pareciera una locura con un ejecutable exagerado de alrededor
de unos 20MB + lo que pudiera traer consigo mi ejecutable. Nada, que
lo logré y fue posible y donde tenía una aplicación con unas librerías
y que rondaban lo 20MB, conseguí tener un solo ejecutable de unos 3MB,
luego de haberle pasado el compresor UPX. Nada, que a mi criterio Qt +
MinGW es una buena alternativa.

> Alguien ha usado MinGW para proyectos medianos o grandes sin problemas?

Me parece que ya te he contestado. ;)

-- 
Saludos,
 Gilberto Cuba Ricardo





Más información sobre la lista de distribución Cconclase