Page 1 of 2

Primeras pruebas con MinGW (gcc para Windows)

PostPosted: Wed Sep 17, 2008 8:31 pm
by Antonio Linares
hemos comenzado a probar MinGW (el compilador GNU gcc para Windows) y hemos de decir que las primeras pruebas son muy prometedoras :-)

Podeis descargar e instalar MinGW desde aqui:
http://sourceforge.net/project/showfile ... _id=595197
Seleccionar el EXE de instalación.

Una vez instalado en vuestro ordenador, id a c:\MinGW\bin\

Cread un fichero test.c con estos contenidos:
test.c
Code: Select all  Expand view
#include <windows.h>

int WINAPI WinMain( HINSTANCE hInstance,   HINSTANCE hPrevInstance, LPSTR lpCmdLine,   int nCmdShow )
{
   MessageBox( 0, "Hello World", "From MingW", MB_ICONINFORMATION );
   
   return 0;
}

Para construidlo, sencillamente haced:
gcc -otest.exe -mwindows test.c

Y obteneis test.exe, que es un EXE realmente pequeño y autocontenido. Podeis descargar test.c y test.exe desde aqui:
http://rapidshare.com/files/146133212/test.zip.html

Re: Primeras pruebas con MinGW (gcc para Windows)

PostPosted: Wed Sep 17, 2008 8:43 pm
by Armando Picon
Antoni

Te felicito por iniciar esta posibilidad hacia este compilador... Espero que sea el retorno al camino para contrucción de nuestras aplicaciones sin depender de herramientas de marca (que aunque sean gratuitas, siempre hay el riesgo de que se corte su desarrollo, precisamente por ser gatuitas).

Estoy convencido que si utilizamos MinGW aprovecharemos mucho más nuestros conocimiento por la posibilidad de tener a Linux a nuestro alcance...

Saludos

Armando


Antonio Linares wrote:hemos comenzado a probar MinGW (el compilador GNU gcc para Windows) y hemos de decir que las primeras pruebas son muy prometedoras :-)

Podeis descargar e instalar MinGW desde aqui:
http://sourceforge.net/project/showfile ... _id=595197
Seleccionar el EXE de instalación.

Una vez instalado en vuestro ordenador, id a c:\MinGW\bin\

Cread un fichero test.c con estos contenidos:
test.c
Code: Select all  Expand view
#include <windows.h>

int WINAPI WinMain( HINSTANCE hInstance,   HINSTANCE hPrevInstance, LPSTR lpCmdLine,   int nCmdShow )
{
   MessageBox( 0, "Hello World", "From MingW", MB_ICONINFORMATION );
   
   return 0;
}

Para construidlo, sencillamente haced:
gcc -otest.exe -mwindows test.c

Y obteneis test.exe, que es un EXE realmente pequeño y autocontenido. Podeis descargar test.c y test.exe desde aqui:
http://rapidshare.com/files/146133212/test.zip.html

PostPosted: Wed Sep 17, 2008 8:50 pm
by Antonio Linares
Desde aqui podeis descargar el make (EXE) que vamos a usar para construir Harbour y xHarbour:

http://sourceforge.net/project/showfile ... e_id=23918

PostPosted: Wed Sep 17, 2008 8:55 pm
by Antonio Linares
Armando,

Gracias por tu apoyo :-)

En nuestra opinión tanto Borland (que ya no es Borland!) como Microsoft llevan caminos equivocados, que precisamente estan ayudando a fortalecer a la comunidad libre (GNU).

Apostar por GNU gcc (GNU C Compiler) es apostar por una muy larga vida para las herramientas de desarrollo que necesitamos usar. El compilador de C es importantísimo ya que es necesario para construir Harbour/xHarbour y para construir EXEs para Windows.

Además es usar herramientas realizadas con sensatez e inteligencia.

PostPosted: Wed Sep 17, 2008 9:31 pm
by Armando Picon
Antonio

Permíteme expresarte mi opinión...

Desde hace un tiempo veo preocupado que las aplicaciones que los miembros del foro están mostrando, con mayor frecuencia se apoyan en el API de Microsoft; así estuve probando algunos ejemplos y observo que para ejecutarlos estamos empezando a depender de las versiones del GDI32 y otro más, que que se escapa el nombre, correspondientes a XP o Vista. No es difícil deducir que con estas versiones, y con ellos nosotros los "clipperos", estamos contribuyendo a la soberbia de MS y nos convertimos en Ms-dependientes.

El poderío de Clipper en su momento y luego Harbour, que es lo que no une, radicaba precisamente en que no dependíamos de SO ni "suites" y si del lenguaje "C" que se encuentra al alcance de todos. Asi que, el hecho que orientes FW-FWH hacia la MinGW, me da la esperanza de volver a hacer las cosas en forma correcta para engrandecer y elevar a la n potencia nuestras aplicaciones, ya sea en windows o en Linux.

Como dicen nuestros amigos ingleses... Go, Antonio, Go!!


Antonio Linares wrote:Armando,

Gracias por tu apoyo :-)

En nuestra opinión tanto Borland (que ya no es Borland!) como Microsoft llevan caminos equivocados, que precisamente estan ayudando a fortalecer a la comunidad libre (GNU).

Apostar por GNU gcc (GNU C Compiler) es apostar por una muy larga vida para las herramientas de desarrollo que necesitamos usar. El compilador de C es importantísimo ya que es necesario para construir Harbour/xHarbour y para construir EXEs para Windows.

Además es usar herramientas realizadas con sensatez e inteligencia.

PostPosted: Wed Sep 17, 2008 10:04 pm
by Antonio Linares
Construyendo Harbour con MinGW:

Bien, ha funcionado correctamente a la primera :-)

He creado un makegnu.bat con este contenido:
Code: Select all  Expand view
set PATH=c:\MinGW\bin;%PATH%
echo mingw32-make.exe > make.bat
make_gnu.bat
del make.bat


Harbour.exe y las librerias han sido construidas. Siguiente paso, crear un primer EXE con este Harbour y sus librerias :-)

PostPosted: Wed Sep 17, 2008 10:23 pm
by Antonio Linares
Un primer EXE construido con Harbour y MinGW ha sido un éxito :-)

He creado un simple test.prg y un fichero batch para construirlo:
test.prg
Code: Select all  Expand view
function Main()

  Alert( "Hello world!" )

return nil

go.bat
Code: Select all  Expand view
c:\harbour\harbour\source\main\w32\mingw32\harbour.exe test.prg /n

c:\mingw\bin\gcc -c -otest.o -Ic:\harbour\harbour\include test.c

c:\mingw\bin\gcc test.o -otest.exe -Lc:\harbour\harbour\lib\w32\mingw32 -Wl,--start-group -lhbcommon -lhbvm -lhbrtl -lhbrdd -lhbmacro -lhblang -lhbcpage -lhbpp -lrddntx -lrddcdx -lrddfpt -lhbsix -lhbusrrdd -lhbct -lgtwin -lhbdebug -Wl,--end-group


Bien simple y aqui teneis el resultado :-)
Image
Aqui teneis el PRG, .bat y el .EXE:
http://rapidshare.com/files/146158123/test.zip.html

Siguiente etapa, recompilar FWH con MinGW...

PostPosted: Thu Sep 18, 2008 2:11 am
by wmormar
Antonio,

excelentes noticias

enhorabuena

PostPosted: Thu Sep 18, 2008 5:18 am
by joseluisysturiz
En buena hora Antonio, nada como la independencia... :shock:

PostPosted: Thu Sep 18, 2008 8:52 am
by Antonio Linares
Tengo que admitir que estoy bastante impresionado con la calidad del compilador MinGW gcc :-)

Esta reportando warnings que ni Borland ni Microsoft detectaban.

La versión de FWH compilada con MinGW está casi lista :-)

PostPosted: Thu Sep 18, 2008 11:26 am
by FiveWiDi
Antonio Linares wrote:Tengo que admitir que estoy bastante impresionado con la calidad del compilador MinGW gcc :-)

Esta reportando warnings que ni Borland ni Microsoft detectaban.

La versión de FWH compilada con MinGW está casi lista :-)


Yo soy lo que se llamaría un mirón (me jode mucho reconocerlo). Os leo mucho y participo poco.
Os tengo que escribir porque últimamente hasta me 'emociono' al leer los mensajes.
Estos cambios, nos van a dar mucho aire fresco, al menos a mi.

Mis más sinceras felicitaciones y ánimos.

Carlos G.

PostPosted: Thu Sep 18, 2008 11:45 am
by Antonio Linares
Ya tenemos una primera versión de FWH construido con MinGW :-)

Y está funcionando correctamente!!!

Se les va a proporcionar como versión beta a los usuarios del recien publicado FWH 8.09 :-)

PostPosted: Thu Sep 18, 2008 2:36 pm
by thefull
Antonio Linares wrote:Ya tenemos una primera versión de FWH construido con MinGW :-)

Y está funcionando correctamente!!!

Se les va a proporcionar como versión beta a los usuarios del recien publicado FWH 8.09 :-)


Antonio, recuerda que tanto como yo, y como Carlos Mora, hace muchisimo tiempo que te insistiamos que intentarás compilar FWH con Mingw.

Yo en el 2005 ya construia el Harbour y xHarbour para Mingw, para usar GTK+, y nunca tuve problemas.

Suerte, y esperemos que la gente vaya abandonando Borland y MSVC y se decanten por el gcc.

PostPosted: Thu Sep 18, 2008 4:14 pm
by Antonio Linares
Rafa,

Bueno, aún hay cosas por revisar.

Por ejemplo, el tamaño de los EXEs resultantes es sensiblemente más grande. Puede ser que no estemos usando algún flag específico para el enlazador. En Harbour con Borland aprox. 1.000.000 bytes, con MinGW 1.700.000 bytes.

Tu detectaste esto ?

PostPosted: Thu Sep 18, 2008 4:42 pm
by thefull
Antonio Linares wrote:Rafa,

Bueno, aún hay cosas por revisar.

Por ejemplo, el tamaño de los EXEs resultantes es sensiblemente más grande. Puede ser que no estemos usando algún flag específico para el enlazador. En Harbour con Borland aprox. 1.000.000 bytes, con MinGW 1.700.000 bytes.

Tu detectaste esto ?

Si, desde el compilador hay un flag, creo que era -s, que indica
que haga un strip.
O tienes la utilidad en mingw, llamada strip.
Miratelo haber si es eso.
Lo que hace es quitar simbolos, etc...,