MinGW ("Minimalist GNU for Windows") era un conjunto de herramientas de compilación para crear aplicaciones nativas de Microsoft Windows. Proporcionaba una adaptación de la Colección de Compiladores GNU (GCC) y herramientas relacionadas que generaban ejecutables para la API de Windows sin necesidad de una capa de compatibilidad ni un entorno de emulación.
MinGW se desarrolló para admitir el desarrollo nativo de Windows utilizando herramientas GNU. A diferencia de los entornos basados en POSIX como Cygwin , MinGW se dirige directamente a la API de Windows y no intenta proporcionar un entorno de ejecución completo similar a Unix . [ 1 ]
Incluye puertos de herramientas de desarrollo GNU esenciales, como GCC y GNU Binutils , junto con un entorno de shell mínimo similar a Unix (MSYS) utilizado para ayudar con los procesos de compilación. [ 2 ]
Proyectos y distribuciones posteriores, como Mingw-w64 y MSYS2, proporcionan entornos modernos y mantenidos activamente para compilaciones nativas de Windows utilizando cadenas de herramientas GNU. [ 3 ] [ 4 ]
Arquitectura
MinGW está diseñado para producir ejecutables nativos de Windows en lugar de proporcionar una capa de compatibilidad POSIX; a diferencia de las cadenas de herramientas basadas en Cygwin, se enlaza con DLL estándar de Microsoft como MSVCRT en lugar de un entorno de ejecución de emulación de Unix. [ 1 ]
Debido a que MinGW no proporciona un entorno POSIX completo, las aplicaciones que dependen de una gestión de procesos estrictamente compatible con POSIX, como fork(), requieren modificaciones para compilarse o ejecutarse correctamente en Windows. [ 1 ]
Flujo de la cadena de herramientas
La cadena de herramientas MinGW sigue el proceso de compilación estándar de GNU adaptado para la plataforma Windows:
- El código fuente ( C , C++ , Fortran, etc.) es compilado por GCC en archivos objeto destinados a Windows.
- El ensamblador (GNU
as) convierte las representaciones intermedias en archivos objeto de código máquina. [ 5 ] - El enlazador (GNU
ld) enlaza los archivos objeto con las bibliotecas del sistema y los componentes de tiempo de ejecución. [ 6 ] - Los archivos ejecutables se producen en formato Portable Executable (PE) y se ejecutan directamente en Windows sin una capa de compatibilidad.
El uso del formato Portable Executable distingue a los binarios generados por MinGW de los sistemas Unix típicos, que suelen utilizar el formato binario ELF (Executable and Linkable Format) .
Comparación con Cygwin
Aunque tanto Cygwin como MinGW pueden usarse para compilar software para Windows, tienen objetivos de diseño diferentes. Cygwin proporciona una capa de compatibilidad POSIX y un entorno de ejecución similar a Unix en Windows, mientras que MinGW se dirige directamente a la API de Windows y produce ejecutables nativos de Windows. [ 1 ]
Los programas creados con Cygwin suelen depender de la DLL de tiempo de ejecución de Cygwin, mientras que los programas generados con MinGW no requieren dicha capa de compatibilidad. [ 1 ]
Compatibilidad con lenguajes de programación
Como una adaptación de GCC, MinGW admite múltiples lenguajes de programación, incluidos C , C++ , Objective-C , Objective-C++ , Fortran y Ada .
Los programas compilados utilizan las bibliotecas de tiempo de ejecución estándar de GCC, incluidas libstdc++las de aplicaciones C++ [ 7 ] y las bibliotecas de tiempo de ejecución de GNU Fortran para aplicaciones Fortran. [ 8 ]
Historia
Desarrollo temprano
MinGW se originó a finales de la década de 1990 para proporcionar un entorno de desarrollo mínimo basado en GNU para Microsoft Windows. [ 2 ] El proyecto proporcionó una forma de compilar aplicaciones de código abierto en binarios nativos de Windows de 32 bits.
Evolución de la bifurcación y del ecosistema
En 2007, se creó la bifurcación Mingw-w64 para agregar soporte para Windows de 64 bits y cobertura de las API de Windows más recientes que no estaban presentes en el proyecto original. [ 3 ] MSYS2 surgió en la década de 2010, basándose en Mingw-w64 y agregando el pacmanadministrador de paquetes y un modelo de distribución modernizado. [ 4 ]
Véase también
Referencias
- 1 2 3 4 5 "¿Cómo compilo un ejecutable de Windows que no usa Cygwin?" . Preguntas frecuentes de Cygwin . Consultado el 11 de abril de 2026 .
- 1 2 "Historia" . MinGW . Archivado del original el 23 de agosto de 2012. Recuperado el 11 de abril de 2026 .
- 1 2 "Historia" . Mingw-w64 . Recuperado el 11 de abril de 2026 .
- 1 2 "¿Qué es MSYS2?" . MSYS2 . Consultado el 11 de abril de 2026 .
- ↑ "Ensamblador GNU (as)" . Documentación de GNU Binutils . Consultado el 11 de abril de 2026 .
- ↑ "Enlazador GNU (ld)" . Documentación de GNU Binutils . Consultado el 11 de abril de 2026 .
- ↑ "Manual de la biblioteca GNU C++" . Documentación en línea de GCC . Free Software Foundation . Consultado el 11 de abril de 2026 .
- ↑ "GNU Fortran y GCC" . Documentación en línea de GCC . Free Software Foundation . Consultado el 11 de abril de 2026 .
Enlaces externos
- Historial del proyecto MinGW (archivado)
- Distribución MinGW de 64 bits , mantenida por un empleado de Microsoft.
- Software de 1998
- Compiladores de C (lenguaje de programación)
- compiladores de C++
- Compiladores cruzados
- Compiladores de Fortran
- Compiladores libres y de código abierto
- Software de dominio público