stringtranslate.com

Ministerio de Salud Pública

MinGW ("Minimalist GNU for Windows"), anteriormente mingw32 , es un entorno de desarrollo de software gratuito y de código abierto para crear aplicaciones de Microsoft Windows .

MinGW incluye un puerto de la Colección de compiladores GNU (GCC), GNU Binutils para Windows ( ensamblador , enlazador , administrador de archivos ), un conjunto de archivos de encabezado específicos de Windows de libre distribución y bibliotecas de importación estáticas que permiten el uso de la API de Windows , una compilación nativa de Windows del depurador GNU del Proyecto GNU y utilidades diversas.

MinGW no depende de archivos de biblioteca de enlace dinámico (DLL) de tiempo de ejecución de C de terceros , y debido a que las bibliotecas de tiempo de ejecución no se distribuyen utilizando la Licencia Pública General de GNU (GPL), no es necesario distribuir el código fuente con los programas producidos, a menos que se utilice una biblioteca GPL en otra parte del programa. [2]

MinGW puede ejecutarse en la plataforma nativa de Microsoft Windows, en Linux (u otro sistema Unix) o en Cygwin . Aunque los programas producidos con MinGW son ejecutables de 32 bits, pueden utilizarse en versiones de 32 y 64 bits de Windows.

El desarrollo del proyecto MinGW se bifurcó con la creación en 2005-2008 de un proyecto alternativo llamado Mingw-w64 .

Historia

MinGW se llamó originalmente mingw32 ("Minimalist GNU for W32"), siguiendo la convención GNU por la cual Windows se abrevia como "W32". [3] [4] Los números se eliminaron para evitar la implicación de que se limitaría a producir binarios de 32 bits . Colin Peters fue el autor de la versión inicial en 1998, que consistía solo en un puerto Cygwin de GCC. [5] [6] Jan-Jaap van der Heijden creó un puerto nativo de Windows de GCC y agregó binutils y make . [5] [6] Mumit Khan luego se hizo cargo del desarrollo, agregando más características específicas de Windows al paquete, incluyendo los encabezados del sistema Windows de Anders Norlander. [5] [6] En 2000, el proyecto se trasladó a SourceForge para solicitar más asistencia de la comunidad y centralizar su desarrollo. [5] [6]

MinGW fue seleccionado como Proyecto del Mes en SourceForge en septiembre de 2005. [6]

MSYS (una contracción de "Minimal System") se introdujo como un sistema de interpretación de línea de comandos de Bourne Shell [7] con el objetivo de lograr una mejor interoperabilidad con el software nativo de Windows.

En 2018, tras un desacuerdo con SourceForge sobre la administración de sus listas de correo, MinGW migró a OSDN . [8]

Tenedor

En 2007, apareció una bifurcación del MinGW original llamada Mingw-w64 con el fin de proporcionar soporte para 64 bits y nuevas API. Desde entonces ha ganado un uso y distribución generalizados. MSYS2 ("sistema mínimo 2") es una distribución de software y una plataforma de desarrollo para Microsoft Windows , basada en Mingw-w64 y Cygwin , que ayuda a implementar código del mundo Unix en Windows. [9]

Soporte de lenguaje de programación

La mayoría de los lenguajes compatibles con GCC también son compatibles con el puerto MinGW. Entre ellos se incluyen C , C++ , Objective-C , Objective-C++ , Fortran y Ada . Se utilizan las bibliotecas de tiempo de ejecución de GCC (libstdc++ para C++, libgfortran para Fortran, etc.). [ cita requerida ]

MinGW se vincula de forma predeterminada a la biblioteca de componentes del sistema operativo Windows MSVCRT , que es la biblioteca C a la que se vinculó Visual C++ versión 6.0 (el objetivo inicial era CRTDLL), que se lanzó en 1998 y, por lo tanto, no incluye soporte para las características de C99 , o incluso todo C89 . Si bien apuntar a MSVCRT produce programas que no requieren la instalación de redistribuibles de tiempo de ejecución adicionales, la falta de soporte para C99 ha causado problemas de portabilidad, particularmente donde se involucran especificadores de conversión de estilo printf . Estos problemas se han mitigado parcialmente con la implementación de una biblioteca de compatibilidad con C99, libmingwex , pero el extenso trabajo requerido está lejos de completarse y es posible que nunca se realice por completo. [10] Mingw-w64 ha resuelto estos problemas y proporciona una funcionalidad printf totalmente compatible con POSIX.

Compatibilidad de enlaces

Los archivos binarios (ejecutables o DLL) generados con diferentes compiladores de C++ (como MinGW y Visual Studio) en general no son compatibles entre sí. Sin embargo, el código C compilado sí lo es. [11]

Componentes

El proyecto MinGW mantiene y distribuye una serie de componentes básicos y paquetes complementarios diferentes, incluidos varios puertos de la cadena de herramientas GNU , como GCC y binutils , traducidos a paquetes equivalentes. [12] [13] Estas utilidades se pueden utilizar desde la línea de comandos de Windows o integrarse en un IDE . Los paquetes se pueden instalar utilizando la línea de comandos a través de mingw-get. [14]

MinGW admite bibliotecas dinámicas nombradas según las convenciones <name>.liby <name>.dll, así como bibliotecas estáticas que siguen la lib<name>.aconvención de nombres común en sistemas Unix y similares a Unix.

Además, un componente de MinGW conocido como MSYS ( sistema mínimo ) proporciona puertos de Windows de un entorno de shell ligero similar a Unix que incluye rxvt y una selección de herramientas POSIX suficientes para permitir la ejecución de scripts autoconf , [15] pero no proporciona un compilador de C ni un sistema de archivos que distinga entre mayúsculas y minúsculas . [16]

Los mingwPORT son complementos aportados por los usuarios a la colección de software MinGW. En lugar de proporcionar estos "complementos" como paquetes binarios precompilados, se proporcionan en forma de scripts interactivos de Bourne Shell , que guían al usuario final a través del proceso de descarga y parcheo automático del código fuente original, y luego su compilación e instalación. Los usuarios que deseen compilar cualquier aplicación a partir de un mingwPORT deben instalar primero tanto MinGW como MSYS. [17]

La implementación de los encabezados del sistema de Windows y las bibliotecas de importación estática se publican bajo una licencia permisiva , [18] mientras que los puertos GNU se proporcionan bajo la Licencia Pública General GNU . Las descargas binarias tanto del paquete MSYS completo como de las utilidades GNU MinGW individuales están disponibles en el sitio MinGW.

Comparación con Cygwin

Aunque tanto Cygwin como MinGW se pueden utilizar para portar software de Unix a Windows, tienen diferentes enfoques: [19] Cygwin tiene como objetivo proporcionar una capa POSIX completa que comprenda una implementación completa de todas las principales llamadas y bibliotecas del sistema Unix. La compatibilidad se considera una prioridad más alta que el rendimiento. Por otro lado, las prioridades de MinGW son la simplicidad y el rendimiento. Como tal, no proporciona ciertas API POSIX que no se pueden implementar fácilmente utilizando la API de Windows, como fork(), mmap()y ioctl(). [19] Las aplicaciones escritas utilizando una biblioteca multiplataforma que se ha portado a MinGW, como SDL , wxWidgets , Qt o GTK , generalmente se compilarán tan fácilmente en MinGW como lo harían en Cygwin.

Los programas de Windows escritos con Cygwin se ejecutan sobre una DLL de compatibilidad con copyleft que debe distribuirse con el programa, a menos que esté enlazada estáticamente. Si está enlazada dinámicamente, el programa también debe proporcionar información sobre dónde obtener el código fuente de Cygwin. MinGW no requiere una capa de compatibilidad , ya que los programas basados ​​en MinGW se compilan con llamadas directas a las API de Windows.

La combinación de MinGW y MSYS proporciona un entorno pequeño y autónomo que se puede cargar en medios extraíbles sin dejar entradas en el registro ni archivos en la computadora.

También es posible realizar compilaciones cruzadas de aplicaciones de Windows con MinGW-GCC en sistemas POSIX. Esto significa que los desarrolladores no necesitan una instalación de Windows con MSYS para compilar software que se ejecutará en Windows con o sin Cygwin.

Véase también

Referencias

  1. ^ "Descargar lista de paquetes". osdn.net . Consultado el 4 de febrero de 2023 .
  2. ^ "(MinGW sobre) MinGW". MinGW.org/wiki . 2008-07-07. Archivado desde el original el 2013-10-06 . Consultado el 2013-10-16 .
  3. ^ "Estándares de codificación GNU". gnu.org . Free Software Foundation. 27 de abril de 2013. 5.5 Portabilidad entre tipos de sistemas . Consultado el 1 de julio de 2013 .
  4. ^ Stallman, Richard (18 de septiembre de 2000). "Libtool Re: ¿Cómo nombrar un proyecto gnu-win32?". libtool (lista de correo) . Consultado el 21 de mayo de 2013 .
  5. ^ abcd «Historia | MinGW». MinGW.org. Archivado desde el original el 23 de agosto de 2012. Consultado el 9 de julio de 2012 .
  6. ^ abcde "Proyecto del mes (de sourceforge)". SourceForge.net. 2005-08-31 . Consultado el 2012-07-09 .
  7. ^ "(wiki:) MSYS". MinGW.org. Archivado desde el original el 28 de agosto de 2006. Consultado el 16 de abril de 2020. MSYS , una contracción de "Minimal SYStem", es un sistema de interpretación de línea de comandos de Bourne Shell.
  8. ^ "Anuncio de migración a OSDN.net". Mingw-users (Lista de correo). 21 de enero de 2018.
  9. ^ MSYS2: página oficial, repositorio de códigos
  10. ^ "(MinGW And) C99". MinGW.org/wiki . 2010-06-21. Archivado desde el original el 2011-05-20 . Consultado el 2011-03-29 .
  11. ^ "Interoperabilidad de bibliotecas creadas por diferentes marcas de compiladores | MinGW". mingw.org . Archivado desde el original el 12 de junio de 2010.
  12. ^ "Preguntas frecuentes (MinGW)". MinGW.org. Archivado desde el original el 21 de noviembre de 2008. Consultado el 9 de julio de 2012 .
  13. ^ "MinGW - Minimalist GNU for Windows". Sourceforge.net . Consultado el 9 de julio de 2012 .
  14. ^ "Instalador de interfaz de línea de comandos de MinGW". Archivado desde el original el 15 de junio de 2012 . Consultado el 14 de junio de 2012 .
  15. ^ "(wiki:) MSYS". MinGW.org. Archivado desde el original el 18 de febrero de 2016. Consultado el 18 de febrero de 2016 .
  16. ^ "(wiki:) MSYS". MinGW.org. Archivado desde el original el 18 de febrero de 2016. Consultado el 18 de febrero de 2016. Un malentendido común es que MSYS es "UNIX en Windows", MSYS por sí mismo no contiene un compilador o una biblioteca C, [...] ni proporciona ninguna funcionalidad específica de UNIX como nombres de archivo que distingan entre mayúsculas y minúsculas.
  17. ^ "(wiki:) mingwPORT". MinGW.org. Archivado desde el original el 23 de julio de 2012. Consultado el 9 de julio de 2012 .
  18. ^ "(MinGW) Condiciones de licencia". MinGW.org. Archivado desde el original el 2009-08-04 . Consultado el 2012-07-09 .
  19. ^ ab "(MinGW:) Acerca de Cygwin". MinGW.org. Archivado desde el original el 28 de agosto de 2009. Consultado el 9 de julio de 2012 .

Enlaces externos