打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MSYS2和MINGW的开发环境安装
userphoto

2016.05.14

关注

一、安装 MYSY2 1. 下载地址下载地址:http://msys2.github.io/32位机器安装:msys2-i686-20150916.exe64位机器安装: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-3mingw64 mingw-64-x86_64-gcc 4.9.1-3msys gcc 4.8.2-2 分别对应于 msys 的三个 .bat 环境。这里先装第一个,其他类似。 2. 安装pacman -S mingw-w64-i686-gccMSYS2 会自动将这个包装在 msys64/mingw32 下,从之前的分析可知只有 mingw32_shell.bat 会用到这个目录下的程序。 三、安装 make查找make相关的make工具pacman -Sl |grep make很多包里都有make工具,安装 MSYS2 的makepacman -S make 四、安装 Git搜索 gitpacman -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. 配置aliashome/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}"    ;;  esacelse  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-3mingw64 mingw-64-x86_64-gcc 4.9.1-3msys 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 --versiongcc.exe (Rev3, Built by MSYS2 project) 4.9.1Copyright (C) 2014 Free Software Foundation, Inc.This is free software; see the source for copying conditions.  There is NOwarranty; 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 kdiff3git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"

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

git config --global mergetool.prompt falsegit 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/bundlegit clone https://github.com/gmarik/Vundle.vim.git

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

set rtp+=~/.vim/bundle/Vundle.vimcall 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 msys2git add -f .bash_profile .bashrc .gitconfig .vimrcgit commitgit 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 mirrorServer = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MSYS2/$arch## PrimaryServer = ftp://148.251.42.38/MSYS2/$arch## Sourceforge.netServer = 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 mirrorServer = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64## PrimaryServer = ftp://148.251.42.38/MINGW/x86_64## Sourceforge.netServer = 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 mirrorServer = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686## PrimaryServer = ftp://148.251.42.38/MINGW/i686## Sourceforge.netServer = 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-toolchainpacman -S mingw-w64-i686-toolchainpacman -S base-develpacman -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" ]thencase "$MSYSTEM" inMINGW32) 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}";;esacelsePATH="${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 openssl64cd openssl64tar zxvf openssl-1.0.2c.tar.gzcd openssl-1.0.2c./configure mingw64 sharedmakemake INSTALL_PREFIX=../ install
  • 32bit
mkdir openssl32
cd openssl32tar zxvf openssl-
tar zxvf openssl-1.0.2c.tar.gz
cd openssl-1.0.2c./configure mingw sharedmakemake 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=../

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MSYS2 + MinGW
mt2523 使用MSYS2代替MSYS1.0,优化 Windows下的mingw编译
Go版GTK:环境搭建(windows)
MSYS2 在 windows 上的开发环境
CompilationGuide/MinGW – FFmpeg
msys2编译器的配置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服