MinGW和MSYS的自动安装

好吧,这是今天写的第二篇文章。我表示这篇才是今天的重头。(伪

半年之前曾经写过一篇关于MinGW和MSYS的手动安装的文章[1],到现在还是全站点击率最高的。(目前这篇文章是最高的。)好吧,侧面反映了MinGW确实是Win上比较难装的软件之一。GNU的东西就是这点最令人不爽,好好的软件弄个自动安装包就这么难么。。好吧,似乎他们听见了我们的抱怨,终于推出了新版的自动安装包!![2]

mingw2-01.jpg

关于MinGW和MSYS的介绍请看之前我写的那篇文章:

http://www.swingworks.net/2010/03/mingw_msys_config/

MinGW 和 MSYS 的手动安装与环境配置

【2010-11-18 注】
目前MinGW已经提供了自动安装包。尽管如此,这篇文章的内容依然有效。如果需要查看关于MinGW和MSYS自动安装的内容,请移步:
http://www.swingworks.net/2010/11/install_mingw_and_msys_with_mingw-get-inst/

 

Linux接触不久了,由于专业的缘故,在实验室里写个C或者写个Shell是一件很平常的事情,也喜欢编译许多方便好用的GNU开源小软件。可惜在Win上这些都不太容易做到,一是Win太喜欢IDE,动不动开个VS然后建立工程是个很麻烦的事情;二是Win下缺少必要的编译组件,基本的gcc在Win上都不能找到。事实上,在Terminal下摸了几把的童鞋一定是对Win下的cmd命令行非常不习惯了(比如本人时常开个cmd然后ls,ls,ls…),如果有个bash,可能倒更符合自己的习惯一些。

MinGW的全称叫Minimalist GNU for Windows,是一套Windows环境下GNU编译组件的接口,通俗的可以说是Win上的gcc [1]。比起MinGW,也许那只企鹅CygWin更加著名一些,实现的效果也差不多,但事实上两者的原理是不同的。Cygwin通过一个中间层的动态链接库来实现Win API和Cygwin的连接,好处是应用在Linux与Win之间移植更加方便,风格更加一致,缺点是发布应用时一定要带上Cygwin的环境动态库,应用执行效率也略微有点低;MinGW则使用静态链接的方式,生成的应用更加本地化,不需要依赖任何第三方的C/C++ RT动态链接库,仅依赖Win自身的运行环境,应用执行效率也稍高[4]。当然现在这两家也开始有了一些功能的互补,总而言之可以相互作为替代品使用。(2012-05-02修改)

MSYS的全称叫Minimal SYStem,是MinGW的一个子系统,是一套运行在Windows上的bash,也就是运行在Win上的Linux Terminal [1]。这个比较好理解,其实就是在Win上使用Linux的命令行进行操作,可以代替cmd来使用。对一些GNU的开源软件,MSYS可能是必需的,因为它们通常需要./configure然后make才能运行(学Linux的童鞋应该非常熟悉这个流程了)[2]。我们将MSYS和MinGW配合使用就可以打造出一个Win下的GNU命令行终端和编译系统。

有一点需要说明的是,MinGW是MSYS都是一套组件而不是一个单独的程序。我们需要下载两者的各组件的压缩包来完成安装和配置。组件的意义在于,我们可以下载需要的部分来配置一个想要的系统,比如不搞编译器设计的童鞋可能不需要flex和bison组件(用来词法和语法分析的),而automake工具也可以在需要的时候才安装,这类似于Linux下环境的配置。知道了这些,我们就可以开始MinGW和MSYS的安装了。