Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
Jugando Atlantic en MS Windows | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
MinGW y Cygwin (none / 0) (#6)
por jorginius ("jorginius" en Google Mail) a las Tue Feb 10th, 2004 at 03:16:39 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Mis experiencias con Atlantic son pocas y tristes (un bug que tenía mi cliente me impedia saber cuando dinero me quedaba B-( )

Bueno, te puedo aseguro que ni a GtkAtlantic ni a Atlantik les pasa eso ahora :-). Atlantik es muy chulo y lo puedes econtrar incluido en el kdegames.

Entiendo que las librerías GTK se pueden usar

Sí, y cualquier otra biblioteca de las que solemos tocar por aquí que tenga versión para Windows también.

¿y las QT? ¿Que otras librerías (no) podemos usar? Pensando en ncurses, o alsa o vete tu a saber.

Alsa supongo que no, a menos que alguien haya portado alsa-lib a Windows o lo haga en el futuro (lo cual no creo que tuviera mucho sentido) y en el caso de Qt, supongo que compilará con MinGW si tienes el código de la versión para WIN32 de esa biblioteca. Ncurses es multiplataforma y compila bien en MinGW o en djgpp.

Para hacer el más mínimo programa, es necesario tener instalado previamente en MinGW en el equipo Windows ¿ocupa mucho?

Pues... no, no hace falta tener instalado nada. A lo único que te obliga MinGW es a distribuir un pequeño runtime (mingwm10.dll o mingwc10.dll, unos 10kb) junto a los programas compilados con él. Esta dll es un pequeño parche para soportar excepciones en C++ en código multihebra de forma segura y transparente.

Creo que confundes MinGW con Cygwin. MinGW es sólo el port de gcc y de muchas de las herramientas GNU a WIN32. Con MinGW programas en y/o para Windows usando gcc, gdb, etc. Tienes acceso al winapi y a otras bibliotecas nativas de MS Windows y nada más.

Cygwin es "otra cosa": emula un sistema Unix (acceso a dispositivos, variables de entorno, apis, las X...) en Windows, de manera que puedes coger cualquier programa de linux (o casi), y recompilarlo en Windows sin tocar ni una línea de código, usando la capa de emulación de Cygwin. Si yo hubiera usado Cygwin lo más seguro es que no tendría que haber tocado nada del gtkatlantic: sólo recompilar y a correr.

Lo malo de Cygwin es que el usuario tiene que instalar el entorno emulado, que es bastante pesado: GTK+, X, un runtime enorme, aplicaciones del espacio de usuario, etc. Pero por lo demás es bastante espectacular: por ejemplo, ahí tienes kde-cygwin, todo un KDE recompilado con Cygwin y corriendo en Windows.

¿Qué ventajas/inconvenientes tiene trabajar así respecto a usar otras librerías como puede ser wxWindows (¿se llama así?) o SDL que tienen en ambas plataformas?

Desde luego, estás hecho un lío :-). A ver, MinGW es un compilador y un montón de herramientas de desarrollo. Las wxWindows puedes compilarlas con MinGW y desarrollar para Windows con ese conjunto de herramientas desde Linux, que es lo que hago yo (compilación cruzada), o desde Windows, o puedes compilarlas con VC++ o con Borland o...

El compilador de MinGW no es el mejor (gcc no soporta aún cabeceras precompiladas y el código c++ que genera es aún un poco grande) pero es una opción barata (gratis) y cómoda si quieres programar sin salir de Linux.

[ Padre ]


Efectivamente, estaba hecho un lío, y ahora más (none / 0) (#7)
por jamarier a las Tue Feb 10th, 2004 at 08:00:00 PM CET
(Información Usuario) http://barbacana.net/blog/

A ver si he entendido bien el asunto: MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows y puede usar aquellas librerías que estén portadas previamente para WIN32 (como puede ser GTK o wxWindows) o usar directamente las API de WIN32. Es una versión libre y un programa propietario equivalente podría ser el Borland C o el Visual C (sin IDE, por supuesto)

Por otra parte tenemos el Cygwin que podriamos decir que es una especie de wine pero al contrario. Es decir ejecuta programas linux sobre un windows a base de interceptar las llamadas al sistema para un supuesto Linux y las convierte en llamadas al sistema para Windows. Al igual que ocurre con Wine, esto carga el sistema y al parecer (por lo que he entendido) a diferencia de wine, es necesario compilar el código para dar el cambiazo en las llamadas al API (aunque no es necesario tocar el código).

¿Y donde entra aquí la compilación cruzada? B-)

Lo que yo entiendo por compilación cruzada es que estás desarrollando (compilando) en linux y ejecutas en windows. MinGW se ejecuta en windows luego si usas MinGW no estás haciendo compilación cruzada. ¿como compilas en linux para que sea ejecutable en windows? o de otra forma, las librerias del API WIN32 las puedes conseguir pero, que yo sepa, en linux se generan ficheros a.out o elf pero no COM o EXE. ¿Cómo se hace?

Y ahora un comentario de opinión sobre el mundo del free software/open source. Creo que es tan importante como desarrollar sistemas absolutamente libres (como pueden ser en alguna medida hurd/linux/*BSD) el diseñar software para sistemas no libres como puede ser Microsoft. El que exista software como puede ser Mozilla absolutamente efectivo para entornos de microsoft hace que muchos usuarios puedan probar «esto del software libre» sin necesidad de lanzarse a la piscina de cabeza antes de saber si tiene agua o no. Lamentablemente es necesario dos tipos de intervenciones en esta situación. La primera ya nombrada es la existencia de software de calidad y la segunda es la necesidad de una campaña de promoción donde se haga notar la diferencia entre un gratis como puede ser iexplorer (impuesto en el Windows), un gratis como puede ser Opera (gratis pero pagado con anuncios o incluso gratis por ser copia ilegal) a libre como Mozilla.

-----
- Porque mañana será un gran día.
[ Padre ]



Intentaremos desliarlo (none / 0) (#8)
por ridiculum a las Tue Feb 10th, 2004 at 11:46:57 PM CET
(Información Usuario)

Total, lo mas que puede pasar es que meta la pata ;)

MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows y puede usar aquellas librerías que estén portadas previamente para WIN32

Cierto. MinGW es el Minimalist GNU win32 compiler. Por decirlo asi, el gcc para win32, asi que puedes usar el api de windows al completo y cuando biblioteca que este en esa plataforma.

Por otra parte tenemos el Cygwin que podriamos decir que es una especie de wine pero al contrario. Es decir ejecuta programas linux sobre un windows a base de interceptar las llamadas al sistema para un supuesto Linux y las convierte en llamadas al sistema para Windows. Al igual que ocurre con Wine, esto carga el sistema y al parecer (por lo que he entendido) a diferencia de wine, es necesario compilar el código para dar el cambiazo en las llamadas al API (aunque no es necesario tocar el código).

Cygwin no es un entorno linux, es un entorno (no se si realmente esta dentro de la categoria de subsistema, usando la terminologia de Windows) POSIX para win32. Evidentemente, debes recompilar lo que necesites, por que cygwin no entiende el formato ejecutable de ningun unix.

¿Y donde entra aquí la compilación cruzada? B-) Lo que yo entiendo por compilación cruzada es que estás desarrollando (compilando) en linux y ejecutas en windows. MinGW se ejecuta en windows luego si usas MinGW no estás haciendo compilación cruzada. ¿como compilas en linux para que sea ejecutable en windows? o de otra forma, las librerias del API WIN32 las puedes conseguir pero, que yo sepa, en linux se generan ficheros a.out o elf pero no COM o EXE. ¿Cómo se hace?

Cuando se compila, creo que se definen, al menos dos parametros que tipicamente se conocen como host y target. El host se refiere a la plataforma donde se ejecute el compilador y el target a la plataforma para la cual generamos el ejecutable. En el caso de la compilacion cruzada, el host y el target difieren, mientras en el caso de la compilacion, digamos, normal, son identicos.

En el caso que nos ocupa, la copilacion cruzada desde linux/i386 a win32/i386 genera un bonito PE (nombre del formato del ejecutable en windows) y el compilador es un mingw32 que se ejecuta en linux/i386 (formato ELF) y genera ejecutables para win32/i386 (formato PE)

Espero no haber liado la cosa mas de la cuenta

[ Padre ]


 
Desenredando el lío (none / 0) (#9)
por jorginius ("jorginius" en Google Mail) a las Wed Feb 11th, 2004 at 12:41:04 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

A ver si he entendido bien el asunto: MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows

Pues sí, salvo porque en "Minimalist GNU for Windows" (MinGW) no viene sólo el compilador (que es básicamente gcc) sino además todo el resto de binutils (gas, gnu ld, gcov, gdb, cpp, objdump, etc) y algunas más como dlltool y dllwrap que permiten construir y trabajar con bibliotecas dinámicas para Windows y windres, para añadir recursos a los binarios como iconos y demás.

Es una versión libre y un programa propietario equivalente podría ser el Borland C o el Visual C (sin IDE, por supuesto)

Sí, aunque en realidad sí que hay IDEs para MinGW en Windows. El más popular es Dev-c++, pero hay más como MinGW Developer Studio (con algunos detalles majos como el autocompletado de funciones) o Visual MinGW. Si eres de la vieja escuela y te gusta el aire retro del Turbo C o del Turbo Pascal puedes probar RHIDE (éste también para MS-DOS).

Por supuesto, también puedes usar vim o emacs :)

¿Y donde entra aquí la compilación cruzada? B-)

En que MinGW no sólo se ejecuta en Windows. Puedes compilar MinGW en Windows y usarlo como un compilador nativo pero también puedes compilar las versiones modificadas de gcc, de ld, etc en Linux y usarlas para generar binarios Windows desde el sistema operativo del pingüino. Tienes el código fuente de MinGW y éste es portable (poco más o menos tan portable como es el código de las herramientas GNU que lo componen).

MinGW se ejecuta en Linux, o en *BSD o si me apuras probablemente también en Solaris/Sparc donde, por cierto, se le llamaría un "compilador canadiense" (y no cruzado): un compilador para un micro y para un S.O. distintos de los que estamos usando para compilar (lo de "canadiense" tiene su miga :)).

Y ahora un comentario de opinión sobre el mundo del free software/open source. Creo que es tan importante como desarrollar sistemas absolutamente libres (...) el diseñar software para sistemas no libres

El problema es que mucho software libre se hace por gusto y a horas perdidas y no sé al resto pero a mí programar en Windows (por hablar del paradigma de sistema no libre :)) me supone un esfuerzo extra. Quiero decir que Unix invita a meter mano con todas esas herramientas y con todas las "tripas por fuera" :) pero Windows es otra cosa. El sistema operativo viene pelado, sin un miserable compilador de C de serie ni documentación para el desarrollador ni nada de nada. Todo te lo tienes que buscar por tu cuenta o pagarlo aparte y así se te van las ganas antes de empezar.

Si ya eres usuario de Delphi o de Visual Studio pues puedes planterte hacer software libre en tus ratos libres para esa plataforma, pero si eres un amater sin un duro la barrera de entrada para programar en Windows es alta (aún apañándote un entorno de desarrollo con Dev-c++ y MinGW), mientras que en Linux (por decir algo) no lo es tanto.

Quizás con Mono y .NET esto mejore.

El que exista software como puede ser Mozilla absolutamente efectivo para entornos de microsoft hace que muchos usuarios puedan probar «esto del software libre»

Sí que lo hace y de hecho a mí me captaron para la causa con esa estrategia :). Tenía Linux en una partición que usaba más bien poco (sólo para cuando había que hablar con el ytalk, la verdad... Y porque un amigo friki se empeñó en que lo instalase) pero para programar aquel shareware que me sacaría de pobre, seguía en DOS:

Al principio usaba un compilador malo con avaricia que sólo soportaba modo tiny y small (por supuesto nada de frivolidades como modo protegido). Luego pasé a gcc, a make, a gdb, etc. Todo del proyecto djgpp, lo que supuso una patentisima mejora :). Continué pasándome a bash en DOS (doloroso acostumbrado a 4DOS pero gané bastante en los scripts) y al resto de las utilidades de Unix estándar y al final, cuando ya de los GPL-chismes sólo me faltaba por instalar el DOSEMU para DOS, borré la partición DOS y di el cambio definitivo :)

¿Qué me pasé porque DOS era una castaña y que ahora con maravillas como MS Windows 2000 Pro no me lo hubiera planteado?, pues no sé. Hoy por hoy en Windows hay software bueno y software malo, como en todos sitios. Hay alternativas libres mejores que mucho software comercial y otro software comercial que es mejor que sus alternativas libres. Supongo que de ser usuario de Windows yo sería de los que tienen instalado el Cygwin (aunque sólo fuera por el servidor X que trae o por usar LyX), la suite de Info-Zip o 7-Zip en vez de Winzip, Mozilla y cosas así. Además, como me gusta programar, buscaría más aplicaciones libres para verles las tripas. Al final daría otra vez el salto, seguro :).

[ Padre ]


 

Jugando Atlantic en MS Windows | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda