使用方法

简单的说,MSYS2 是MSYS的一个升级版, 提供了bash shell, Autotools, 版本控制软件和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman。有了 Pacman 升级系统,安装新软件包,还有解决软件包间的依赖问题就变得简单多了。
可以在这里查看MSYS2包括了哪些软件包:
https://github.com/Alexpux/MSYS2-packages

安装

msys2 的主页地址:
http://sourceforge.net/projects/msys2/

首先下载安装文件,我的系统是32位的,所以下载32位的安装包:
msys2-i686-20140910.exe

msys2 要求安装目录只能有 ascii 字符并且不能有空格。我选择安装在:
C:/msys32
这样安装完后只有最基本的系统,没有gcc开发环境。运行如下命令可以打开一个bash shell:
msys2_shell.bat
剩下的工作都在这个bash shell下进行。
msys2 移植了Arch Linux 上的软件包管理系统 Pacman,有了包管理系统,升级、安装新的软件就很简单了。 不过我一直在用redhat 系的linux,没有接触过 Pacman,学习新命令还是花了些时间。这里把一些常见的Pacman命令记录一下。
更新本地软件包
更新本地软件包数据库:
pacman -S --refresh
可以缩写为:pacman -Sy
然后升级软件包:
pacman -S --refresh --sysupgrade
可以缩写为:pacman -Syu

这里需要特别注意,不能写为:
pacman -Su
给出的理由如下,我水平太低,没完全理解是啥意思:
because all MSYS2 programs share the same address space for DLLs due to how MSYS2 (well, Cygwin) implements 'fork', and because any Pacman package (both MSYS2 and MinGW-w64 ones) may use MSYS2's bash to run a post-install script, issuing this command can cause these scripts to fail to run should any updated, core MSYS2 DLLs end up in a different location to where they were. For this reason, the safest procedure for updating MSYS2 is to do it in two stages;
首先更新MSYS2核心程序包:
pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

如果这一步更新了一些软件包,那么就需要关闭 msys2 然后再重新运行如下两个批处理文件:
autorebase.bat
msys2_shell.bat

否则更新其他软件包是会报错。(看来MSYS2 还是有点弱,希望以后能够把这个问题改好了)
之后就可以用:
pacman -Su
更新系统的其他软件包了。
列出所有安装了的软件
pacman -Q --explicit
或者
pacman -Q -e
安装新的软件包
pacman -S <package_names|package_groups>
比如我要安装 gcc。那么执行:
pacman -S gcc
然后按照提示安装就可以了。
搜索软件包
很多时候,我们不知道要按照的软件的准确名称,这时就要先查询软件包的名称。
pacman -Ss <name_pattern>

比如我想安装gcc相关的软件,那么可以这样搜索
pacman -Ss gcc

pacman -Q --groups
可以列出所有的软件组,在我这里执行的结果如下:
base bash
base bash-completion
base bsdcpio
base bsdtar
base bzip2
base catgets
base coreutils
base crypt
base curl
base dash
base file
base filesystem
base findutils
base flex
base gawk
base gcc-libs
base getopt
base grep
base gzip
base less
base lndir
base man-db
base mintty
base msys2-runtime
base ncurses
base pacman
base pacman-mirrors
base pkgfile
base rebase
base sed
base texinfo
base tzcode
base which
msys2-devel binutils
msys2-devel gcc
msys2-devel msys2-w32api-headers
msys2-devel msys2-w32api-runtime
compression bzip2
compression gzip
compression liblzo2
compression xz
libraries cloog
libraries gmp
libraries heimdal-libs
libraries icu
libraries isl
libraries libarchive
libraries libasprintf
libraries libbz2
libraries libcares
libraries libcatgets
libraries libcrypt
libraries libcurl
libraries libdb
libraries libexpat
libraries libffi
libraries libgdbm
libraries libgettextpo
libraries libgpg-error
libraries libgpgme
libraries libiconv
libraries libidn
libraries libintl
libraries liblzma
libraries liblzo2
libraries libmetalink
libraries libnettle
libraries libopenssl
libraries libp11-kit
libraries libpcre
libraries libpipeline
libraries libreadline
libraries libsqlite
libraries libssh2
libraries libtasn1
libraries libxml2
libraries mpc
libraries mpfr
libraries zlib
Database db
Database gdbm
base-devel file
base-devel flex
base-devel gawk
base-devel gettext
base-devel grep
base-devel groff
base-devel m4
base-devel pacman
base-devel perl
base-devel pkgfile
base-devel sed
base-devel texinfo
MSYS2-devel msys2-runtime-devel

删除一个软件包
pacman -R <package_names|package_groups>

 

MSYS2开发环境搭建
软件安装

下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\msys64。

pacman是MSYS2自带的软件管理工具:

    可通过修改msys64\etc\pacman.d下的三个文件修改软件源,参考帮助文档,可供选择的有:中国科学技术开源软件镜像、北京理工大学镜像、日本北陆先端科学技术大学院大学SourceForge镜像、The UK Mirror Service Sorceforge mirror等。
    下载后的软件包默认存放目录msys64\var\cache\pacman\pkg;若命令行下载速度较慢,可以到到软件源网站使用下载工具下载相应的软件包,然后拷贝到此目录,接着使用命令行进行安装。
    运行msys2_shell.bat: pacman -Sy 更新本地包数据
    升级核心包: pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl, 之后需要关闭所有 MSYS2 shell,然后运行 autorebase.bat
    升级其他包:pacman -Su
    常用命令:

    pacman -Q查看已安装的软件包
    pacman -S -g查看软件组
    pacman -Q -g base-devel查看软件组包含的软件
    pacman -Q -l vim查询软件包的内容
    pacman -Q -s nettle查询软件所在的包

    查看工具帮助:pacman -h ;pacman -S -h
    建议通过安装软件组来安装工具链

pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-i686-toolchain
pacman -S base-devel
pacman -S vim

    1
    2
    3
    4

MSYS2应用说明
运行环境说明

    msys64\etc\fstab中可以配置文件目录映射:比如配置C:\Users\lenovo\Desktop /desktop后,可以在终端直接cd /desktop后可以直接切换到C:\Users\lenovo\Desktop目录下。

    任务栏快捷键:msys64\usr\bin\mintty.exe拖拽到任务栏上,右击选择属性,将目标改成三种BAT脚本中的一个。

    vim高亮配置:将msys64\etc\skel.vimrc拷贝到用户目录下。

    MSYS2有三个执行脚本,分别是 msys2_shell.bat、mingw32_shell.bat 和 mingw64_shell.bat,查看内容可以看到其中只有一行区别,即是设定 MSYSTEM 变量。这个变量在 /etc/profile 中会用到:

MSYS2_PATH="/usr/local/bin:/usr/bin:/bin"
MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}"
INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}"
MINGW_MOUNT_POINT=
if [ -n "$MSYSTEM" ]
then
 case "$MSYSTEM" in
   MINGW32)
     MINGW_MOUNT_POINT=/mingw32
     PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
     PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
     ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
     MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
   ;;
   MINGW64)
     MINGW_MOUNT_POINT=/mingw64
     PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}"
     PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
     ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal"
     MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}"
   ;;
   MSYS)
     PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
     PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig"
   ;;
   *)
     PATH="${MSYS2_PATH}:${PATH}"
   ;;
 esac
else
 PATH="${MSYS2_PATH}:${PATH}"
Fi

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32

可见,三个 .bat 的区别就是 PATH 的设置,mingw32_shell.bat 优先使用 msys64/mingw32 下的工具,mingw64_shell.bat 优先使用 msys64/mingw64 下的工具,而 msys2_shell.bat 两个都不使用,只用自身 msys 的工具。这么做的好处是当需要编译 32bit Target 的项目时使用 mingw32_shell.bat,64 bit 使用 mingw64_shell.bat,各套工具互不干扰。
添加右键快捷方式 <2018-10-29 win10>

msys2.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Mingw64]
@="MinGW &64 Bash Here"
"Icon"="D:\\msys64\\msys2.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Mingw64\command]
@="D:\\msys64\\msys2_shell.cmd -mingw64 -here"

    1
    2
    3
    4
    5
    6
    7
    8

制作软件包makepkg

MSYS2官网的软件包是通过makepkg或makepkg-mingw制作的。
可参

    MINGW_INSTALLS=mingw64 makepkg -sLf --skippgpcheck
    http://sourceforge.net/p/msys2/wiki/Contributing to MSYS2/,
    C:\msys64\usr\share\pacman\PKGBUILD.proto

常用软件包编译

常用软件包我们可以简单的使用命令直接从官网安装即可,比如安装openssl:

    32bit:pacman -S mingw-w64-i686-openssl
    64bit: pacman -S mingw-w64-x86_64-openssl

有时候根据项目需要我们不得不自己动手编译依赖的软件包,以下是我在工作用到的库编译过程记录。
openssl

    64bit

mkdir openssl64
cd openssl64
tar zxvf openssl-1.0.2c.tar.gz
cd openssl-1.0.2c
./configure mingw64 shared
make
make INSTALL_PREFIX=../ install

    1
    2
    3
    4
    5
    6
    7

    32bit

mkdir openssl32
cd openssl32
tar zxvf openssl-1.0.2c.tar.gz
cd openssl-1.0.2c
./configure mingw shared
make
make INSTALL_PREFIX=../ install

    1
    2
    3
    4
    5
    6
    7

zlib

    32bit

mkdir zlib32
cd zlib32
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
make -f ./win32/Makefile.gcc
make
make install -f win32/Makefile.gcc  DESTDIR=../

    1
    2
    3
    4
    5
    6
    7

参考

    MSYS2的源配置
    MSYS2 + MinGW-w64 + Git + gVim 环境配置

扩展阅读

    利用MSYS2安装MinGW+Qt开发环境
    GCC online documentation
---------------------
作者:callinglove
来源:CSDN
原文:https://blog.csdn.net/callinglove/article/details/48601775
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

一、安装 MYSY2   1. 下载地址 下载地址:http://msys2.github.io/ 32位机器安装:msys2-i686-20150916.exe 64位机器安装:msys2-x86_64-20150916.exe   2. 更新环境 更新本地软件包数据库: pacman -S --refresh 可以缩写为:pacman -Sy   然后升级软件包: pacman -S --refresh --sysupgrade 可以缩写为:pacman -Syu   3. 常用 pacman 命令 安装 pacman -S package-name   删除 pacman -R package-name   列出所有安装了的软件 pacman -Q --explicit 或者 pacman -Q -e   搜索软件包 列出可用的包,包含未安装的包 pacman -Sl 使用grep查找相关的包 pacman -Sl|grep package-name 使用正则查找 pacman -Ss package-name   比如我想安装gcc相关的软件,那么可以这样搜索 pacman -Ss gcc   运行环境说明: MSYS2安装根目录有三个执行脚本,分别是 msys2_shell.bat、mingw32_shell.bat 和 mingw64_shell.bat,查看内容可以看到其中只有一行区别,即是设定 MSYSTEM 变量。这个变量在 /etc/profile 中会用到。   三个 .bat 的区别就是 PATH 的设置,mingw32_shell.bat 优先使用 msys64/mingw32 下的工具,mingw64_shell.bat 优先使用 msys64/mingw64 下的工具,而 msys2_shell.bat 两个都不使用,只用自身 msys 的工具。这么做的好处是当需要编译 32bit Target 的项目时使用 mingw32_shell.bat,64 bit 使用 mingw64_shell.bat,各套工具互不干扰。   二、安装 GCC 随便哪个 shell.bat 下都可以   1. 查看可用的安装包 pacman -Sl | grep gcc   可以看到以下三个 mingw32 mingw-w64-i686-gcc 4.9.1-3 mingw64 mingw-64-x86_64-gcc 4.9.1-3 msys gcc 4.8.2-2   分别对应于 msys 的三个 .bat 环境。这里先装第一个,其他类似。   2. 安装 pacman -S mingw-w64-i686-gcc MSYS2 会自动将这个包装在 msys64/mingw32 下,从之前的分析可知只有 mingw32_shell.bat 会用到这个目录下的程序。   三、安装 make 查找make相关的make工具 pacman -Sl |grep make 很多包里都有make工具,安装 MSYS2 的make pacman -S make   四、安装 Git 搜索 git pacman -Sl |grep git   安装 MSYS2 的 git: pacman -S git   四、其他配置   1. 要将常用工作目录映射到 MSYS2 的 ~ 下,可用 mount 命令(加入 home/username/.bash_profile 中): mount -fo binary,noacl,posix=0,user D:/docs ~/docs   这样打开 MSYS2 shell 后直接 cd docs 即可进入常用工作目录。   2. 配置alias home/username/.bashrc 中,修改或增加,如 alias ll='ls -l' alias la='ls -lA'

MSYS2 + MinGW-w64 + Git + gVim 环境配置

一、安装 MSYS2

先装 MSYS2 的好处是之后可以将 $HOME 设为 /home/name/,再装其他 *nix 系工具时配置文件都会放在 MSYS2 的 /home/name 下,方便管理。

1. 到 http://sourceforge.net/projects/msys2/ 下载安装。

安装位置设为 D:/develop/msys64

添加环境变量 HOME 为 D:\develop\msys64\home\name,这个变量非常有用,后面配置要多次用到。

2. 运行 msys2_shell.bat

pacman -Sy

更新本地包数据

3. 升级核心包

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

之后需要关闭所有 MSYS2 shell,然后运行 autorebase.bat

4. 升级其他包

pacman -Su

运行环境说明:

可以看到 MSYS2 有三个执行脚本,分别是 msys2_shell.bat、mingw32_shell.bat 和 mingw64_shell.bat,查看内容可以看到其中只有一行区别,即是设定 MSYSTEM 变量。这个变量在 /etc/profile 中会用到:

if [ -n "$MSYSTEM" ]
then
  case "$MSYSTEM" in
    MINGW32)
      PATH="/mingw32/bin:${MSYS2_PATH}:${PATH}"
      PKG_CONFIG_PATH="/mingw32/lib/pkgconfig"
      MANPATH="/mingw32/share/man:${MANPATH}"
      TERMINFO=/mingw32/share/terminfo:${TERMINFO}
    ;;
    MINGW64)
      PATH="/mingw64/bin:${MSYS2_PATH}:${PATH}"
      PKG_CONFIG_PATH="/mingw64/lib/pkgconfig"
      MANPATH="/mingw64/share/man:${MANPATH}"
      TERMINFO=/mingw64/share/terminfo:${TERMINFO}
    ;;
    MSYS)
      PATH="${MSYS2_PATH}:/opt/bin:${PATH}"
      PKG_CONFIG_PATH="/usr/lib/pkgconfig:/lib/pkgconfig"
      TERMINFO=/usr/share/terminfo
    ;;
    *)
      PATH="${MSYS2_PATH}:${PATH}"
    ;;
  esac
else
  PATH="${MSYS2_PATH}:${PATH}"
fi

可见,三个 .bat 的区别就是 PATH 的设置,mingw32_shell.bat 优先使用 msys64/mingw32 下的工具,mingw64_shell.bat 优先使用 msys64/mingw64 下的工具,而 msys2_shell.bat 两个都不使用,只用自身 msys 的工具。这么做的好处是当需要编译 32bit Target 的项目时使用 mingw32_shell.bat,64 bit 使用 mingw64_shell.bat,各套工具互不干扰。

二、安装 GCC

随便哪个 shell.bat 下都可以

1. 查看可用的安装包

pacman -Sl | grep gcc

可以看到以下三个

mingw32 mingw-w64-i686-gcc 4.9.1-3
mingw64 mingw-64-x86_64-gcc 4.9.1-3
msys gcc 4.8.2-2

分别对应于 msys 的三个 .bat 环境。这里先装第一个,其他类似。

2. 安装

pacman -S mingw-w64-i686-gcc

MSYS2 会自动将这个包装在 msys64/mingw32 下,从之前的分析可知只有 mingw32_shell.bat 会用到这个目录下的程序。

3. 运行

打开 mingw32_shell.bat 来试一下:

gcc --version
gcc.exe (Rev3, Built by MSYS2 project) 4.9.1
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

三、安装 Git

1. 下载 Git for Windows。安装过程选择 Git cheetah plug-in 和 Run Git from Windows Command Prompt,这样 Vim 的 Vundle 插件可以调用 git。

由于安装 MSYS2 时已设置了 HOME 环境变量,Git 会自动将配置文件放在 HOME 下,将来在 MSYS2 中使用时共用一套配置,方便。

安装 MSYS2 的 git:

pacman -S git

2. 设置 autocrlf 为 input。

git config --global core.autocrlf input

由于设置了 HOME 环境变量,可以使 gvim 和 MSYS2 的 vim 共用一套配置文件:~/.vimrc,插件也可以统一放在 ~/.vim/ 下。在使用 Vundle 时,git clone 出的代码是 unix 换行符可以避免 MSYS2 vim 读取 Vundle 插件文件时出错。

3. KDiff3 用作 diff 和 merge 工具很方便,也一并装了吧。装好后配置 Git:

git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"

中间有空格也能正确处理。可以试一下 git mergetool 和 git difftool 看看是否配置正确了。为避免每次用 git difftool 时都提示确认,下面两行也可以设一下:

git config --global mergetool.prompt false
git config --global difftool.prompt false

四、安装 gVim 并配置 Vundle 进行插件管理

1. 安装 gVim 到 D:\develop\Vim,组件选择 full

2. 由于设置了 HOME 环境变量,就可以将 gvim 的配置统一放在 HOME 目录下

将 Vim/vimfiles 下的所有文件夹删除,在 ~/.vim 下新建 bundle 文件夹

3. 参考 Vundle.vim 的教程设置好 Git 的 Curl 脚本:

https://github.com/gmarik/Vundle.vim/wiki/Vundle-for-Windows

4. 将 gmarik/Vundle.vim git clone 到 ~/.vim/bundle 下:

cd ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git

5. 继续参考 Vundle.vim 的教程修改 ~/.vimrc 文件,将内容添加到开头处。虽然是在 Windows 环境下使用 gvim,但由于设置了 HOME 环境变量,以下设置按 Lunix 配置更方便:

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

以后插件会自动安装在 $HOME/.vim/bundle 目录下。

6. 修改 .vimrc 添加要安装的插件包,然后在 gVim 中运行

:PluginInstall

7. 现在可以使用 :h vundle 来查看 Vundle 的帮助了。

五、其他配置

1. 将 gVim 目录加入 Path 环境变量,设置 Git 使用 gvim 作为默认 editor:

git config --global core.editor gvim

2. 要将常用工作目录映射到 MSYS2 的 ~ 下,可用 mount 命令(加入 .bash_profile 中):

mount -fo binary,noacl,posix=0,user D:/docs ~/docs

这样打开 MSYS2 shell 后直接 cd docs 即可进入常用工作目录。

3. 其他工具的安装类似,查看 pacman 手册即可。常用的:

列出可用的包

pacman -Sl

安装

pacman -S package-name

删除

pacman -R package-name

4. 将配置同步到 github 上!

a. 新建 repository UserConfig,添加 .gitignore 文件,内容为 *,默认忽略所有文件。

b. git clone 到本地

git clone https://github.com/tadvent/UserConfig.git

c. 将其中的 .git 目录和 .gitignore README.md 文件移动到 ~/ 下。

d. 新建 msys2 分支并添加要同步的文件,over~

git checkout -b msys2
git add -f .bash_profile .bashrc .gitconfig .vimrc
git commit
git push origin master msys2

MSYS2的源配置

msys2安装g++: pacman -S mingw-w64-x86_64-toolchain mingw-w64-i686-toolchain 
由于GFW作怪,访问SF的源并不稳定,笔者推荐使用北京理工大学的镜像:

http://mirror.bit.edu.cn/msys2/REPOS/

修改msys2安装目录下的\etc\pacman.d文件夹里面的3个mirrorlist.*文件,依样画葫芦把镜像添加再更新即可

http://www.rswiki.org/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/msys2?rev=1416044574

复制代码

##
## MSYS2 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MSYS2/$arch
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MSYS2/$arch
## Primary
Server = ftp://148.251.42.38/MSYS2/$arch
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
##
## 64-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/x86_64
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64
## Primary
Server = ftp://148.251.42.38/MINGW/x86_64
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
##
## 32-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/i686
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/i686
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/i686
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686
## Primary
Server = ftp://148.251.42.38/MINGW/i686
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686

MSYS2本身是用cygwin驱动的但它直接使用MINGW64来开发,所以编译出的程序是原生windows程序。我们可以直接从source force上下到 
msys2: 
http://sourceforge.net/projects/msys2/ 
mingw64: 
http://sourceforge.net/projects/mingw-w64/ 
下载后,吧它们安装到同一个文件夹下(比如C:\MSYS2)就可以工作了,注意安装mingw64时平台要选x86_64而不i686,这样你才能得到64位程序的编译能力,但这同时也意味着你的库是64位的,所以想要要同时开发32位和64位程序的话,就需要装两次了,一次选x86_64,一次选i686。 
MSYS2中引入了Arch Linux中的pacman包管理器,解决了我们安装软件时令人头疼的库依赖问题,在MSYS2的安装目录中找到批处理文件mingw64_shell.bat,就可以进入msys2环境了,你可以把\usr\bin和\mingw64\bin这两个目录加到path中去,这样你在windows自己的命令行中也可以使用这些工具了。 
首先我们输入命令pacman -Syu对系统进行全面更新,如果以后你装了一些新的包,这个命令也会帮你把你装的包一起更新。如果嫌国外的服务器网速太慢可以把中科大的镜像添加到pacman的mirrorlist文件中,具体方法参见https://lug.ustc.edu.cn/wiki/mirrors/help/msys2。不过这个镜像的文件可能有些不全,但我感觉source force的速度还是可以的,所以当中科大镜像没文件,它自己的ftp连不上,最后就会连上source force。 
你可以输入pacman -Sl查看可以安装的包,用pacman -Ss来模糊搜索,pacman -Q来列出已经安装的包,各种命令都可以用pacman -h获得帮助: 
$ pacman -h 
用法: pacman <操作> […] 
操作: 
pacman {-h –help} 
pacman {-V –version} 
pacman {-D –database} <选项> <软件包> 
pacman {-Q –query} [选项] [软件包] 
pacman {-R –remove} [选项] <软件包> 
pacman {-S –sync} [选项] [软件包] 
pacman {-T –deptest} [选项] [软件包] 
pacman {-U –upgrade} [选项] <文件>

使用 ‘pacman {-h –help}’ 及某个操作以查看可用选项 
如果要安装包,用pacman -S 包名即可,所有的包名在pacman -Sl中会显示出来,个人建议安装的几个包是:git,man,make,mingw-w64-x86_64-boost,mingw-w64-x86_64-gsl。注意工具可以装msys的但库或者脚本语言请务必装mingw-w64-x86_64的,因为这不但更全而且执行效率也好得多。 
如果装包遇到文件冲突(应为我们事先装好的mingw64,pacman是不知道的),可以用–force选项来强制安装。这里不建议用pacman直接装mingw-w64-x86_64-gcc因为工具组不全会在windows下无法运行,而且它还会装上一个Python2,这对我们这些Python3党来说是很不好受的一件事。 
当然你可以直接安装mingw-w64-x86_64-python3包,不过我还是更习惯直接用python官方的windows版吧,不过这里有个好处就是它可以帮你装上最新的scipy而不需要到Scipy的官网上慢速地拖安装包。输入pacman -S mingw-w64-x86_64-python3-scipy就可以了,同时它帮你也解决了numpy的依赖问题。 
如果需要更新包用pacman -Sy,这个命令同样可以用直接装包。 
由于Qt官方没有提供Mingw64的版本,它只有VC和mingw32的版本,所以装mingw64的qt目前用msys2是最简单的方法,你输入pacman -S mingw-w64-x86_64-qt5就可以了。然后到Qt官网去下载一个Qtcreator,自己配置一下编译系统,在菜单栏的工具-选项-构建和运行以及版本控制中去设置就好了。需要填入的文件包括qmake,g++,gdb,git,它们在\mingw64\bin和\usr\bin这两个文件夹中可以找到。 
最后讲一下在任务栏创建一个快捷方式的方法,你可以直接在\usr\bin中找到mintty.exe它是一个功能更好的windows下的终端,把它拖到任务栏固定好,注意默认的字体太小,在option-text中调整一下,建议使用consolas 16号字体。然后右键点击任务栏快捷方式再右键Terminal,左键属性,把目标改成: 
(……\usr\bin\mintty.exe 这块不要动直接加后面的参数)-i /msys2.ico env MSYSTEM=MINGW64 bash -l -i 
然后你就可以在任务栏直接快速启动msys2终端了。


MSYS2开发环境搭建

软件安装

下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\msys64。

pacman是MSYS2自带的软件管理工具:

  1. 可通过修改msys64\etc\pacman.d下的三个文件修改软件源,可供选择的有:中国科学技术开源软件镜像北京理工大学镜像日本北陆先端科学技术大学院大学SourceForge镜像The UK Mirror Service Sorceforge mirror等。
  2. 下载后的软件包默认存放目录msys64\var\cache\pacman\pkg;若命令行下载速度较慢,可以到到软件源网站使用下载工具下载相应的软件包,然后拷贝到此目录,接着使用命令行进行安装。
  3. 运行msys2_shell.bat: pacman -Sy 更新本地包数据
  4. 升级核心包: pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl, 之后需要关闭所有 MSYS2 shell,然后运行 autorebase.bat
  5. 升级其他包:pacman -Su
  6. 常用命令: 
    • pacman -Q查看已安装的软件包
    • pacman -S -g查看软件组
    • pacman -Q -g base-devel查看软件组包含的软件
    • pacman -Q -l vim查询软件包的内容
    • pacman -Q -s nettle查询软件所在的包
  7. 查看工具帮助:pacman -h ;pacman -S -h
  8. 建议通过安装软件组来安装工具链

    pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-i686-toolchain pacman -S base-devel pacman -S vim

MSYS2应用说明

运行环境说明

  1. msys64\etc\fstab中可以配置文件目录映射:比如配置C:\Users\lenovo\Desktop /desktop后,可以在终端直接cd /desktop后可以直接切换到C:\Users\lenovo\Desktop目录下。

  2. 任务栏快捷键:msys64\usr\bin\mintty.exe拖拽到任务栏上,右击选择属性,将目标改成三种BAT脚本中的一个。

  3. vim高亮配置:将msys64\etc\skel.vimrc拷贝到用户目录下。

  4. MSYS2有三个执行脚本,分别是 msys2_shell.batmingw32_shell.bat 和 mingw64_shell.bat,查看内容可以看到其中只有一行区别,即是设定 MSYSTEM 变量。这个变量在 /etc/profile 中会用到:

    MSYS2_PATH="/usr/local/bin:/usr/bin:/bin" MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}" INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}" MINGW_MOUNT_POINT= if [ -n "$MSYSTEM" ] then case "$MSYSTEM" in MINGW32) MINGW_MOUNT_POINT=/mingw32 PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" ;; MINGW64) MINGW_MOUNT_POINT=/mingw64 PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" ;; MSYS) PATH="${MSYS2_PATH}:/opt/bin:${PATH}" PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig" ;; *) PATH="${MSYS2_PATH}:${PATH}" ;; esac else PATH="${MSYS2_PATH}:${PATH}" Fi
可见,三个 .bat 的区别就是 PATH 的设置,mingw32_shell.bat 优先使用 msys64/mingw32 下的工具,mingw64_shell.bat 优先使用msys64/mingw64 下的工具,而 msys2_shell.bat 两个都不使用,只用自身 msys 的工具。这么做的好处是当需要编译 32bit Target 的项目时使用 mingw32_shell.bat,64 bit 使用 mingw64_shell.bat,各套工具互不干扰。

制作软件包makepkg

MSYS2官网的软件包是通过makepkg或makepkg-mingw制作的。 
可参

常用软件包编译

常用软件包我们可以简单的使用命令直接从官网安装即可,比如安装openssl:

  • 32bit:pacman -S mingw-w64-i686-openssl
  • 64bit: pacman -S mingw-w64-x86_64-openssl

有时候根据项目需要我们不得不自己动手编译依赖的软件包,以下是我在工作用到的库编译过程记录。

openssl

  • 64bit

    mkdir openssl64 cd openssl64 tar zxvf openssl-1.0.2c.tar.gz cd openssl-1.0.2c ./configure mingw64 shared make make INSTALL_PREFIX=../ install
  • 32bit
mkdir openssl32 cd openssl32 tar zxvf openssl- tar zxvf openssl-1.0.2c.tar.gz cd openssl-1.0.2c ./configure mingw shared make make INSTALL_PREFIX=../ install ./configure mingw shared make make INSTALL_PREFIX=../ install

zlib

  • 32bit 
mkdir zlib32 
cd zlib32 
tar zxvf zlib-1.2.8.tar.gz 
cd zlib-1.2.8/ 
make -f ./win32/Makefile.gcc 
make 
make install -f win32/Makefile.gcc DESTDIR=../
http://www.360doc.com/content/16/0514/16/496343_559090195.shtml
上一篇:windows搭建gcc开发环境(msys2) objdump


下一篇:dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法