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

輝夜(tadvent) posted @ 2014年9月27日 16:40 in 未分类 with tags gcc gvim Git MINGW MSYS2 Vundle , 18147 阅读

以前用 MSYS 的多,最近重装系统顺带把环境重新配一下,发现 MSYS2 挺顺手的。

一、安装 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-inRun 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

 

Avatar_small
依云 说:
2014年10月01日 15:27

MSYS2 这个有意思~

Avatar_small
依云 说:
2014年10月01日 15:40

MSYS2 这个有意思~

sheao11 说:
2015年2月06日 17:27

请问博主,安装GCC
pacman -Sl | grep gcc
之后,显示文件有很多,如下:
mingw32 mingw-w64-i686-gcc 4.9.2-2
mingw32 mingw-w64-i686-gcc-ada 4.9.2-2
mingw32 mingw-w64-i686-gcc-ada-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-fortran 4.9.2-2
mingw32 mingw-w64-i686-gcc-fortran-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-libgfortran 4.9.2-2
mingw32 mingw-w64-i686-gcc-libgfortran-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-libs 4.9.2-2
mingw32 mingw-w64-i686-gcc-libs-debug 4.9.1-3
mingw32 mingw-w64-i686-gcc-objc 4.9.2-2
mingw32 mingw-w64-i686-gcc-objc-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-ada 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-ada-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-fortran 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-fortran-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-libgfortran 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-libgfortran-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-libs 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-libs-debug 4.9.1-3
mingw64 mingw-w64-x86_64-gcc-objc 4.9.2-2
mingw64 mingw-w64-x86_64-gcc-objc-debug 4.9.1-3

其中像mingw-w64-i686-gcc-debug、mingw-w64-i686-gcc-ada-debug等不能安装,说是:
警告:无法解决 "mingw-w64-i686-gcc=4.9.1-3","mingw-w64-i686-gcc-debug" 的一个依赖关系
:: 因为无法解决依赖关系,以下软件包无法进行更新:
mingw-w64-i686-gcc-debug

也就是说不能用debug,这个会不会影响gdb命令的使用啊?请问怎么解决呢?谢谢。

Avatar_small
依云 说:
2015年2月06日 17:33

@sheao11: 你安装 gcc 的 debug 符号干什么,难道你要调试 gcc 么?

sheao11 说:
2015年2月06日 18:29

ps 敲如下命令后
git config --global core.autocrlf input
显示报错:
error: could not lock config file //.gitconfig: File exists

Avatar_small
輝夜(tadvent) 说:
2015年2月08日 20:15

@sheao11: 是不是装了两个 git,其中一个还没有 config 完又运行了另一个 git config 命令 = =。。。我没有见过这个错误,猜测可能是这样。把 .gitconfig.lock 文件删掉试试看。

sheao11 说:
2015年2月15日 13:54

@輝夜(tadvent): 没有装两个git的。。。

sheao11 说:
2015年2月15日 13:56

@依云: 不是要调试GCC,是要调试程序啊。不安装debug,没有gdb,怎么调试程序啊?

Avatar_small
依云 说:
2015年2月15日 17:05

@sheao11: gdb 应该在叫 gdb 的包里呀。-debug 里应该都是调试符号。不过我现在就不去 Windows 里细看了,你可以 pacman -Ql 包名看看文件列表。

sheao11 说:
2015年2月15日 18:44

@依云: 没有gdb的包啊,不过我单独下了mingw32和mingw64,然后把文件拷到msys的目录下,可以用gdb了,不过肯定是没安装的。

sheao11 说:
2015年2月15日 19:22

@輝夜(tadvent): 哦,可能是我弄错了,那一条已经通过了,只是下面这个:
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"

这个路径"C:/Program Files/KDiff3/kdiff3.exe"是什么 意思啊?

sheao11 说:
2015年2月15日 20:35

@輝夜(tadvent): 博主,装gvim前都已经弄好了,可这gvim搞不懂,比如“在 ~/.vim 下新建 bundle 文件夹”—— ~/.vim 是那个目录啊?我没找到

sheao11 说:
2015年2月17日 17:58

博主,不好意思,麻烦您说下
3. 参考 Vundle.vim 的教程设置好 Git 的 Curl 脚本:

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

——这个怎么设置啊?

sheao11 说:
2015年2月17日 18:08

安装了gvim,但是并没有看到“可以使 gvim 和 MSYS2 的 vim 共用一套配置文件:~/.vimrc”的这个.vimrc,而且这个文件该如何配置啊?谢谢啦,麻烦您说下

Avatar_small
輝夜(tadvent) 说:
2015年3月02日 01:27

@sheao11: 我可能写的简略了,你是完全没有 Linux 的使用经验吗? ~ 就是前面设的 HOME 目录啊,~/.vim 你就在 ~ 下自己建一个 .vim 目录。 ~/.vimrc 你就在 ~ 下自己建一个 .vimrc 文件额。。。

Avatar_small
輝夜(tadvent) 说:
2015年3月02日 01:37

@sheao11: Curl 的设置,把网页上那段代码复制到 C:\Program Files\Git\cmd\curl.cmd 文件里(假设你的 msysgit 装在 C:\Program Files\Git),开个命令行试一下 curl --version 能不能运行

Avatar_small
kre 说:
2015年4月25日 20:59

博主,有QQ没。。。小白求助。。安装GIT那一步开始一路错误到最后。。。怎么办

Avatar_small
輝夜(tadvent) 说:
2015年4月27日 23:59

@kre: 额。。。具体错误是神马indecision

可以给我发邮件

md51 说:
2015年12月09日 18:04

博主的邮件地址是多少?我第一次弄msys ,一头雾水!希望跟你能多请教!请给出E-mail

Avatar_small
md51 说:
2015年12月09日 19:39

$ pacman -Su
:: 正在进行全面系统更新...
正在解决依赖关系...
正在查找软件包冲突...

软件包 (9) curl-7.45.0-1  flex-2.6.0-1  gcc-libs-4.9.2-6  gmp-6.1.0-1
           grep-2.22-1  libcurl-7.45.0-1  libreadline-6.3.008-6
           mintty-1~2.2.1-1  ncurses-6.0.20151121-1

全部安装大小:  16.11 MiB
净更新大小:  -0.47 MiB

:: 进行安装吗? [Y/n] y
(9/9) 正在检查密钥环里的密钥                       [#####################] 100%
(9/9) 正在检查软件包完整性                         [#####################] 100%
(9/9) 正在加载软件包文件                           [#####################] 100%
(9/9) 正在检查文件冲突                             [#####################] 100%
(9/9) 正在检查可用硬盘空间                         [#####################] 100%
错误:无法打开目录://usr/share/libalpm/hooks/: Permission denied
错误:无法提交处理 (failed to run transaction hooks)
发生错误,没有软件包被更新。
 

 

这是怎么一回事?@辉夜(tadvent)


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter