MinGW o MinGW32 (Minimalist GNU for Windows) es una implementación de los compiladores GCC para la plataforma Win32, que permite migrar aplicaciones GNU a entornos Windows. Es un derivado de Cygwin en su versión 1.3.3.
MinGW incluye un conjunto de la api de Win32, permitiendo un desarrollo de aplicaciones nativas para esa plataforma, pudiendo generar ejecutables y librerías usando la API de Windows.
MinGW fue creado por Colin Peters, el 1 de julio de 1998, compilándolo con Gygwin. La primera versión nativa de MinGW fue realizada por Jan-Jaap van der Heijden, quien también tuvo participación en el proyecto GCC. Mumit Khan estuvo a cargo del mantenimiento del proyecto e incluyo al compilador algunas características propias de Windows. Los archivos de cabecera del API de Windows fueron provistos por Anders Norlander.
Una de las desventajas de MinGW es que los ejecutables que genera son de tamaño más grande que los generados por otros compiladores. Esto ocurre cuando se incluyen los archivos de cabecera estándares de C++ (por ejemplo, #include ), y se debe a que el compilador vincula todas las librerías dentro del archivo ejecutable de manera estática.
MinGW incluye MSYS (Minimal SYStem) un shell POSIX/Bourne para ejecutar scripts de configuración usados por make y ./configure
Después de descargar MinGW y MSYS, incluyendo mingw-runtime, w32api, binutils y gcc, gdb y mingw32-make se pueden expandir los archivos de dos formas. Poner el directorio de MinGW dentro de MSYS o instalarlos en directorios distintos y modificar el archivo MSYS /etc/fstab para agregar un apuntador al directorio donde mingw esta instalado.
Para probar la instalación se puede correr el shell de msys y probar el comando de línea
gcc --v
Para habilitar el soporte de IDEs agregar \lib a la variable de entorno LIBRARY_PATH y los subdirectorios bin de y a la variable de entorno PATH
Aplicación de consola:
En un archivo con el nombre hello.c poner el siguiente código:
#include
int main(int argc, char **argv)
{
printf ("Hello\n");
return (0);
}
y compilar con
gcc -c hello.c
y después
gcc -o hello hello.o
Alternativamente
gcc -o hello hello.c
En un archivo con el nombre hello.cpp poner el siguiente código:
#include
int main(int argc, char **argv)
{
std::cout << "Hello" << std::endl;
return (0);
}
y compilar con
g++ -c hello.cpp
g++ -o hello hello.o
Aplicación Windows
En un archivo con el nombre hello.c poner el siguiente código:
#include
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
return (0);
}
para crear el ejecutable usar los comandos de linea
gcc -c hello.c
y
gcc -o hello hello.o -mwindows
el parametro -mwindows es necesario para que se incluyan las librerias necesarias para un programa Windows.
dll
En un archivo con el nombre dllfct.h poner el siguiente código:
#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif
// function to be imported/exported
EXPORT void tstfunc (void);
En un archivo con el nombre dllfct.c poner el siguiente código:
#include
#include "dllfct.h"
EXPORT void tstfunc (void)
{
printf ("Hello\n");
}
En un archivo con el nombre Hello.c poner el siguiente código:
#include "dllfct.h"
int main ()
{
tstfunc ();
return (0);
}
Para crear una dll y un ejecutable que lo use:
gcc -c hello.c
gcc -c -DBUILD_DLL dllfct.c
gcc -shared -o tst.dll -Wl,--out-implib,libtstdll.a dllfct.o
gcc -o hello.exe hello.o -L./ -ltstdll
Se puede especificar el directorio a usar para los includes durante la compilación con
-I/path/to/headers
y las librerias para link:
-L/usr/lib/library
Usualmente no hay necesidad de andar moviendo las librerias.
Archivo .def para un dll
Si tiene un dll llamado file.dll y quiere crear un archivo .def con el nombre file.def,
echo EXPORTS > file.def
nm file.dll | grep ' T _' | sed 's/.* T _//' >> file.def
Para crear una biblioteca con el nombre file.a :
dlltool --def file.def --dllname file.dll --output-lib file.a
.Net
algoritmo
análisis
android
arquitectura de datos
blogger
blogspot
C
c#
C++
código libre
compresión
control de versión
CSS
datos
depuración
desarrollo
desarrollo dirigido por pruebas
diseño
documentación
Eclipse
empresarial
energía
España
etiquetas
extreme programming
Generación de código
gnu
google
google analytics
guía
hacking
hardware
historia
Internet
ISO
java
javascript
libreria
libros
linux
Lisp
malware
metodología
México
Microsoft
mingw
Monterrey
nix
nube de etiquetas
objeto
ODBC
patron
Perl
persistencia
pocket PC
poo
productividad
programación
programación de sistemas
programación orientada a objetos
protocolo
proyectos
Python
redes
requerimientos
rooting
ruby
RUP
Rusia
salud
Scheme
seguridad
seo
smartphones
software
software libre
SQL
SQL Server
Stack Overflow
Stuxnet
Sun
tag cloud
tags
TDD
tecnología
telcel
telecomunicaciones
template
Test-Driven Development
tracking
ubuntu
UML
Uruguay
USB
videojuegos
virii
widget
wifi
wikipedia
Windows
YouTube
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario