今天在编译一个开源">软件时,用到了mingw 和msys。在这里介绍下他们的功能和配置。
mingw是指只用自由软件来生成纯粹的win32可执行文件的编译环境,它是minimalist gnu on windows的略称。详情请参考。
这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用mfc (microsoft foundation classes)。
mingw:一个可自由使用和自由发布的windows特定头文件和使用gnu工具集导入库的集合,允许你生成本地的windows程序而不需要第三方c运行时库。
mingw,即 minimalist gnu for windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 gcc(gnu compiler c)产生 windows32 程序。
在基本层,mingw 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准c运行时间库(msvcrt.dll),该库在所有的 nt os 上有效,在所有的 windows 95 发行版以上的 windows os 有效,使用基本运行时间,你可以使用 gcc 写控制台模式的符合美国标准化组织(ansi)程序,可以使用微软提供的 c 运行时间扩展。该功能是 windows32 api 不具备的。下一个组成部分是 w32api 包,它是一组可以使用 windows32 api 的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用 crt(c runtime)又使用 windows32 api 功能。
mingw 官方网站为
实际上 mingw 并不是一个 c/c++ 编译器,而是一套 gnu 工具集合。除开 gcc (gnu 编译器集合) 以外,mingw 还包含有一些其他的 gnu 程序开发工具 (比如 gawk bison 等等)。
开发 mingw 是为了那些不喜欢工作在 ">linux(">freebsd) ">操作系统而留在 windows 的人(比如我)提供一套符合 gnu 的 gnu 工作环境。
(此前的 cygwin 虽然也是 gnu 的 windows 移植,但是 cygwin 是有版权的,而不是 gnu。)
所以,使用 mingw 我们就可以像在 linux 下一样使用 gnu 程序开发工具。
gcc 就是 mingw 的核心所在,gcc 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 gcc 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 devkitpro,里面包含 gcc 的 arm(for gba/ds/gp32) 和 mips(for psp) 版本。)
gcc 本身不像 vc 那样拥有 ide 界面(在 windows 上也存在 dev c++ 之类的支持 mingw 编译器的 ide)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 vc 的开发都不用 vc 所带的 ide 编辑器,而是选用 gnu 的 vim 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。
关于 mfc,微软基础库类,这个随 vc++ 携带的一个源代码公开的开发包,和其他 windows 程序开发包是一样的。如果有 vc++ 的授权,你完全可以使用 mfc 的源代码,也就是你使用 gcc 来编译 mfc 程序是完全可以的。
当然,gnu 下也很多 windows 程序开发包,甚至有一些是支持跨平台使用的。不仅仅可以直接把源代码编译为 windows 程序,也可以不经修改编译为其他操作系统的图形程序。
不过 gnu 下,最流行的图形界面开发库是 gtk+。gtk+ 也能很好的运行在 windows 平台(比如 gimp 和 gaim)。
总体说来,使用 mingw 就是 gnu。
msys:minimal gnu(posix)system on windows,是一个小型的gnu环境,包括基本的bash,make等等。是windows下最优秀的gnu环境。(是否厌倦了cygwin蜗牛般的shell环境,试试msys中的rxvt吧)
安装
使用mingw:
下载后安装,选择缺省选项(current),选择g++,然后mingw会自动下载相关的软件,期间可能需要不少时间(老外的网站)。
下载
下载后安装,中间会问你mingw安装在哪里,按照安装提示输入即可。
安装好后,设置windows的环境变量path,加上c:\mingw\bin,然后运行菜单mingw/msys/msys。
如果喜欢mingw 和 msys请收藏或告诉您的好朋友.
阅读(190) | 评论(0) | 转发(0) |