mingw :包含文件和端口库的软件

更新时间:2024-09-21 01:10

MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效。使用基本运行时,你可以使用GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows API 功能。

发展沿革

MinGW项目的开发已分叉,在2005-2008年创建了一个名为Mingw-w64的替代项目,以提供对64位和新API的支持。MinGW可以在本地的Microsoft Windows平台上运行,也可以在Linux(或其他Unix)上交叉托管,或在Cygwin上“交叉原生”运行。尽管MinGW下生成的程序是32位可执行文件,但它们可以在Windows的32位和64位版本中使用。

2010年06月09日,MinGW 2.14 发布,该版本修正了下载错误的问题,同时几乎升级了所有的依赖软件包到最新版本,新增对 libarchive, libgee, xvidcore 包的支持。

2010年06月18日,MinGW 2.15 发布,跨平台编译环境,该版本修正了由Qt项目引起的下载错误,另外所有相关的包都升级到了最新版本。

2010年12月13日,MinGW 2.17 发布。

2011年03月20日,MinGW 2.19 发布,该版本改进内容:

1. 改进了下载机制,

2. A cmake toolchain file is now provided to simplify cross-compiling projects that use CMake,

3. 不再支持 Lenny (GNU/Linux老稳定版本),

4. gtk 包改名为 gtk2,

5. 更新几乎所有的包到最新的版本,

6. 支持下列表: dbus, graphicsmagick, libical, liboauth, physfs, and vigra. boost::filesystem users should note that version 3 is a major revision and now the default in 1.46。

2011年06月09日,MinGW 2.21 发布,该版本修复了很多包中的一些小bug,并升级几乎所有的包到最新的版本;而 gtkmm 和 gtksourceviewmm 重命名为 gtk疯狂城市赛车 2 和gtksourceviewmm2 ;增加对 libass、poco和 t4k_common 包的支持。

MSYS(“最小系统”的缩写)被引入为Bourne shell命令行解释器系统,旨在更好地与本机Windows软件互操作。2018年,在与sourceforge关于其邮件列表管理发生分歧后,MinGW迁移到了OSDN。

功能服务

大多数由GCC支持的语言也在MinGW端口上得到支持。其中包括C、C++Objective-C、Objective-C++、Fortran和Ada。使用GCC运行时库(C++使用libstdc++,Fortran使用libgfortran等)。MinGW默认链接到Windows操作系统组件库MSVCRT,这是Visual C++版本6.0链接到的C库(最初的目标是CRTDLL),该库于1998年发布,因此不包括对C99特性的支持,甚至不包括所有C89特性。虽然针对MSVCRT的程序不需要安装额外的运行时可再发行组件,但缺乏对C99的支持引起了移植问题,尤其是在涉及printf样式转换说明符的情况下。这些问题已通过实现C99兼容库libmingwex部分得到缓解,但所需的大量工作远未完成,可能永远无法完全实现。Mingw-w64已解决这些问题,并提供了完全符合POSIX的printf功能。

用不同的C++编译器(如MinGW和Visual Studio)生成的二进制文件(可执行文件或DLL)通常在链接时不兼容。但是,已编译的C代码在链接时是兼容的。

MinGW项目维护和分发许多不同的核心组件和补充包,包括各种GNU工具链的端口,例如GCC和binutils,并转换为等效包。这些实用程序可以从Windows命令行中使用或集成到集成开发环境中。可以通过mingw-get使用命令行安装软件包。

MinGW支持根据\u003cname\u003e.lib和\u003cname\u003e.dll约定命名的动态库,以及遵循Unix和类Unix系统中常见的lib\u003cname\u003e.a命名约定的静态库。

此外,MinGW的一个组件MSYS(最小系统)提供了轻量级类Unix shell环境的Windows端口,包括rxvt和一系列POSIX工具,足以使autoconf脚本运行,但它不提供C编译器或区分大小写的文件系统。

mingwPORTs是用户对MinGW软件集合的附加内容。它们不是以预编译的二进制包的形式提供这些“附加组件”,而是以交互式Bourne shell脚本的形式提供,指导最终用户完成自动下载和修补原始源代码,然后构建并安装的过程。希望从mingwPORT构建任何应用程序的用户必须首先安装MinGW和MSYS。

Windows系统头文件和静态导入库的实现是在宽松许可下发布的,而GNU端口是在GNU通用公共许可下提供的。可以在MinGW网站上下载完整MSYS软件包和各个MinGW GNU实用程序的二进制文件。

功能特色

尽管Cygwin和MinGW都可用于将Unix软件移植到Windows,但它们有不同的方法:Cygwin旨在提供一个完整的POSIX层,包括所有主要Unix系统调用和库的完整实现。兼容性被认为比性能更重要。另一方面,MinGW的优先事项是简单性和性能。因此,它不提供某些POSIX API,这些API无法使用Windows API轻松实现,例如fork()、mmap()和ioctl()。使用自身已移植到MinGW的跨平台库编写的应用程序,例如SDL、wxWidgets、Qt或GTK,通常在MinGW中的编译与在Cygwin中一样容易。

使用Cygwin编写的Windows程序在必须与程序一起分发的受copyleft保护的兼容性DLL之上运行,除非它静态链接。如果动态链接,程序还必须提供有关从何处获取Cygwin源代码的信息。MinGW不需要兼容层,因为基于MinGW的程序是使用对Windows API的直接调用编译的。

MinGW和MSYS的结合提供了一个小型的、自包含的环境,可以加载到可移动介质上,无需在注册表中保留条目或在计算机上保留文件。还可以使用POSIX系统交叉编译MinGW-GCC的Windows应用程序。这意味着开发人员不需要安装带有MSYS的Windows以编译将在Windows上使用或不使用Cygwin运行的软件。

参考资料

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: