另辟蹊径-利用MSYS2安装MinGW+Qt开发环境
(含32位-64位-动态库-静态库-qwt-opencv等等)
By Winland, 2015.04.04
本文介绍在Windows系统里 MSYS2 环境和 MinGW-w64 编译套件安装、Qt开发环境安装。
一、MSYS2及其安装使用
1、MSYS2介绍
这得从 MinGW 和 MSYS说起,原本 GNU 工具只在 Linux/Unix 系统里才有,随着 Windows 系统的广泛使用, 为了在 Windows 系统里可以使用 GNU 工具,诞生了 MinGW(Minimalist GNU for Windows) 项目,利用 MinGW 就可以生成 Windows 里面的 exe 程序和 dll 链接库。MinGW只是编译工具集没有类似Unix命令行环境,所以为了进一步在Windows系统上使用类Unix环境,MinGW项目组衍生了MSYS子项目,该项目从Cygwin派生,构造了一个类Unix命令行环境,并提供POSIX功能支持。
MinGW本身仅支持生成32位程序,而MinGW-w64项目相当于是MinGW的升级版,同时支持生成32位和64位程序。MSYS2也是MSYS的衍生版,使用MinGW-w64编译工具集。另外MSYS2还有一个非常强大的功能,它从Arch Linux引入了软件包管理器pacman工具,使得MSYS2功能扩展非常方便,并且可以通过pacman来解决各个软件和库之间的依赖关系,自动安装需要的依赖软件包。
MSYS2项目还打包了非常多的开发库和开发工具,能移植到Windows上的估计都打包了,而且还可以进行扩展。因此通过MSYS2的pacman工具安装诸如MinGW-w64编译工具集、Qt开发库和QtCreator、qwt绘图插件、opencv开发库、ffmpeg、gstreamer、openssl、sqlite、postgresql、gtk、crypto++、mesa、openal、tcl/tk、vlc、zlib、SDL等,都是易如反掌。对于python、perl、ruby、lua脚本环境, git、mercurial、cvs等版本控制软件,cmake、clang、llvm等编译生成工具,也可以通过pacman来安装。
MSYS2 主页
msys2.github.io/
sourceforge/projects/msys2/
MSYS2详细安装指南
sourceforge/p/msys2/wiki/MSYS2%20installation/
2、安装MSYS2
首先从MSYS2项目主页或SourceForge下载MSYS2的基本安装包:
32位系统下载 ,
64位系统下载 。
请记住 i686 对应32位系统,x86_64对应64位系统,以后装软件都是这种对应关系。
下面以32位的示范安装过程:
lol更新慢点击“下一步”,
注意上面选择安装位置,路径里不要有任何中文、特殊字符、空格等等,一般装在磁盘根的msys32或msys64目录。注意磁盘剩余空间要有10GB以上剩余空间(硬盘空间不足的不要模仿),那个分区剩余空间比较大就装哪。MSYS2本身不大,但是后续如果装Qt库、opencv之类的,会越装越多,所以要留足空间。Qt动态库安装后是2.7GB,Qt静态库也是差不多2.7GB,非常占空间。
设置好安装路径,点击“下一步”,
点击下一步,
等待安装结束,
点击完成,看到MSYS2命令行:
先关闭该命令行,现在还干不了什么。
安装后,在开始菜单-->MSYS2 32bit-->
里面有三个命令行工具:
第一个 MinGW-w64 Win32 Shell是指32位程序开发环境,在32位和64位Windows里都能用。
第二个 MinGW-w64 Win64 Shell 是指64位程序开发环境,仅在64位Windows里使用。
第三个 MSYS2 Shell是MSYS2环境管理命令行,可以安装卸载MSYS2环境里软件、管理文件系统、执行脚本等等。
只有在头两个 MinGW-w64的命令行里才能使用gcc、g++等编译工具。MSYS2 Shell 一般仅用于软件包安装管理和更新,另外两个Shell才是开发环境,不要弄错了。
3、更新MSYS2系统环境
MSYS2环境的软件和升级都是在线方式的,需要联网下载。所以需要一个可靠的软件源,软件源配置文件在  msys32\etc\pacman.d\ 文件夹里三个:
  mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys
更换软件源的话只需要更改三个文件里的Server = 右边的服务器地址,用写字板或其他编辑器打开编辑就行了,里面都是文本(注意备份旧的文件)。
软件源可以使用默认的SourceForge官方地址,也可以自定义,比如使用爱尔兰的源
①mirrorlist.mingw32中使用
ftp://ftp.heanet.ie/mirrors/download.sourceforge/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686
②mirrorlist.mingw64中使用
ftp://ftp.heanet.ie/mirrors/download.sourceforge/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64
    ③mirrorlist.msys中使用
ftp://ftp.heanet.ie/mirrors/download.sourceforge/pub/sourceforge/m/ms/msys2/REPOS/MSYS2/$arch
接下来打开开始菜单里的MSYS2 Shell进行MSYS2系统更新:
(1)更新软件数据库
pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
有询问就输入 Y,继续执行。
如果出现下载软件包错误,那就重复执行刚才的命令,直到成功为止。
(2)关闭旧的MSYS2命令行,重新打开MSYS2 Shell,更新软件
pacman -Su