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的安装了。

与网上的大多数教程不同的是,我个人更倾向于先安装MSYS再安装MinGW,理由有两个:一是MSYS安装之后会在安装目录预留一个MinGW组件的安装目录,将MinGW装到这个目录可以免去接下来的一些配置步骤;二是MSYS和MinGW是一个配合的系统,先安装MSYS有利于后安装的MinGW组件的调试。

我们所需要的安装文件都在sourceforge下载到:

http://sourceforge.net/projects/mingw/files/

根据官网wiki,MinGW的自动安装器只能装gcc3而且长时间不更新了(目前主流的是gcc4)[3],所以MinGW组件推荐手动安装。MSYS有自动安装包,包含了大部分必要的组件了。尽管如此,你可能还是需要额外下载一些组件。我推荐的准备列表如下:(在sourceforge页面上点View All Files然后用Ctrl+F找,如果组件有更新就用相应的新版本)

MSYS:

MSYS-1.0.11.exe  >>自动安装包
msysDTK-1.0.1.exe  >>Development Tools Kit
autoconf-2.63-1-msys-1.0.11-bin.tar.lzma  >>automake工具,可选
automake-1.11-1-msys-1.0.11-bin.tar.lzma  >>automake工具,可选
bash-3.1.17-2-msys-1.0.11-bin.tar.lzma  >>bash命令行,必装
coreutils-5.97-2-msys-1.0.11-bin.tar.lzma  >>coreutil运行包,必装
coreutils-5.97-2-msys-1.0.11-ext.tar.lzma  >>coreutil拓展包
coreutils-5.97-2-msys-1.0.11-lang.tar.lzma  >>coreutil语言包
gettext-0.17-1-msys-1.0.11-bin.tar.lzma  >>这个在automake时要的,运行包,需要时再装也可以
gettext-0.17-1-msys-1.0.11-dev.tar.lzma  >>同上,开发包
libltdl-2.2.7a-1-msys-1.0.11-dev.tar.lzma  >>libtool开发包
libltdl-2.2.7a-1-msys-1.0.11-dll-7.tar.lzma  >>libtool动态链接库
libtool-2.2.7a-1-msys-1.0.11-bin.tar.lzma  >>libtool运行包
m4-1.4.13-1-msys-1.0.11-bin.tar.lzma  >>m4,不知什么用,官网推荐必装
vim-7.2-1-msys-1.0.11-bin.tar.lzma  >>大名鼎鼎的vim
vim-7.2-1-msys-1.0.11-lang.tar.lzma  >>vim的语言包

MinGW:

gcc-full-4.4.0-mingw32-bin-2.tar.lzma  >>gcc4,包含了C++,Obj-C,Java等等编译器,如果硬盘空间不大可以选择各对应的包
mingw-utils-0.4-1-mingw32-bin.tar.lzma  >>mingw-util
binutils-2.20-1-mingw32-bin.tar.gz  >>bin-util
mingwrt-3.17-mingw32-dev.tar.gz  >>mingw-runtime开发包
mingwrt-3.17-mingw32-dll.tar.gz  >>mingw-runtime动态链接库
w32api-3.14-mingw32-dev.tar.gz  >>win32api
mingw32-make-3.81-20090910.tar.gz  >>mingw32-make
gdb-7.0-2-mingw32-bin.tar.gz  >>gdb,gnu的调试工具,选装

其它:

一个可以解压gnu压缩包的工具,WinZip,WinRAR或7-Zip都可以

MSYS自动安装包很傻瓜。需要注意的是安装路径请不要含有中文或空格,这是为了保证将来的MinGW能正常运行[3]。装完以后出现的cmd对话框先选y再选n,然后回车回车再按任意键。如下:

01

02

03

04

装完之后可以看到MSYS目录下有一个mingw目录,它是空的。接下来的mingw组件就放到这里。

05

接下来是MSYS的DTK,安装到MSYS的目录下,名字叫1.0的那个(一般来说无须指定)。

06

接下来选适合自己CPU的选项。

07

接下来的事情就爽多了。用压缩工具将所有MSYS的组件包解压到MSYS目录下(名字叫1.0的那个),然后将所有MinGW的组件包解压到MinGW目录下(还记得MSYS目录下的那个吗?)即可。注意解压出来的文件是如图的可执行文件而不是tar包噢,如果提示覆盖,覆盖即可,不影响的。以后所有相关的包(只要不是src源码包)都可以用这个方法安装。

08

接下来我们可以运行桌面上的MSYS快捷方式了。

09

运行界面如图:

10

你可以试试Win下的cde盘在bash命令行下是怎么表示的,呵呵。

顺带一提,将MinGW的bin目录加入path环境变量就可以在cmd下使用gcc了。

11

12

 

[1] MinGW.org. Home of the MinGW, MSYS and mingwPORT Projects. http://www.mingw.org/.
[2] MinGW.org. MSYS. http://www.mingw.org/wiki/MSYS.
[3] MinGW.org. Getting Started. http://www.mingw.org/wiki/Getting_Started.
[4] cygwin和minGW. Allen_Fu. http://blog.chinaunix.net/uid-25365622-id-3182552.html

鱼尾Swing

国内某理工学校电子类专业85后。热爱PS,热爱WEB,对各种技术都好奇。平时看看动画,听听音乐,做爱做的事。作为工坊的工头,负责工坊的维护,操劳各种苦力工作。

More Posts - Website

Follow Me:
Twitter

Leave a Reply