零、MSYS2是什么
MSYS2 是一个在 Windows 上提供类 Unix/Linux 开发环境的工具集,内置了类似 Linux 的 Shell、GNU 工具链以及 pacman 包管理器,用户可以像在 Linux 下一样安装和使用 gcc、make、bash、git 等开发工具。MSYS2 常用于在 Windows 上进行 C/C++ 编译、构建开源软件和移植 Linux 工程,同时提供 mingw64/ucrt64 等不同子环境,用于生成原生 Windows 可执行程序。
我们可以直接在MSYS2中安装对应的工具链,并直接通过MSYS2管理各个工具,而不需要像以前一样每个工具单独在网上找安装包、配置path,还不能对他们进行统一管理。
一、MSYS2的安装
可以去MSYS2的官网下载安装:https://www.msys2.org/#installation
也可以在各大镜像站找到安装包,比如科大源:https://mirrors.ustc.edu.cn/msys2/distrib/msys2-x86_64-latest.exe
二、MSYS2安装后的基本配置
1、换源
使用科大镜像源:sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
2、更新软件包
msys2使用的是archlinux的pacman包管理器,因此对于软件包的操作与archlinux一致。
更新软件包列表并更新软件:pacman -Syu
3、关于MSYS2中的多个环境
安装完成后,可以在开始菜单中找到多个可用的MSYS2环境:

这些环境的区别具体如下:
| 仓库 | 作用 | 编译出来的 exe |
|---|---|---|
msys/ | MSYS2 自己使用 | 依赖 msys-2.0.dll |
mingw64/ | 原生 Windows (旧 CRT) | 原生 exe |
ucrt64/ | 原生 Windows (新 CRT) | 原生 exe |
clang64/ | 原生 Windows + clang | 原生 exe |
一般我们默认使用ucrt64环境即可,如果需要兼容老的Windows,可以使用mingw64。
后面的各种配置和软件包的安装,本文都默认使用ucrt64。若需要更改为其他环境,自行替换即可。
4、配置Windows Terminal
如果不想使用MSYS2自带的终端,可以使用Windows终端作为代替(好看!)。
打开Windows终端(如果没有可以去微软商店下载,Windows11应该是自带的),找到设置

选择左下角的打开JSON文件,此时会弹出配置文件的编辑界面

在”profiles”的”list”字段中添加如下内容(将<MSYS2安装路径>替换为你实际的安装路径):
{
"commandline": "<MSYS2安装路径>/msys2_shell.cmd -defterm -here -no-start -ucrt64",
"guid": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
"icon": "<MSYS2安装路径>/ucrt64.ico",
"name": "UCRT64 / MSYS2",
"startingDirectory": "<MSYS2安装路径>/home/%USERNAME%"
}
完成后如图所示:

注意上一条配置项和本条配置项之间需有英文逗号!
配置完成后,在Windows终端中,可以找到MSYS2的环境:

5、将环境加入至系统path
这一步可做可不做,如果添加了系统path,那么后面在安装常用开发工具后,我们就可以直接在powershell中调用对应的程序(比如gcc,git等)。
如果担心MSYS2的变量干扰了Windows原有的变量,则可不做这一步,后续使用MSYS2内的工具时,先打开MSYS2终端即可。
以下是配置方法:
按下Windows键+s,搜索高级系统设置,并打开

打开后,选择环境变量,然后点击系统变量中的path,选择编辑:

在新的对话框中点击添加,然后输入以下内容:
<MSYS2安装路径>\ucrt64\bin
结果如图:

三、安装常用开发工具
1、安装gcc
MSYS2包含多个版本的仓库,我们正常进行Windows开发,使用mingw64或ucrt64版本均可,下面是ucrt64版本的gcc安装方式:
pacman -S mingw-w64-ucrt-x86_64-gcc
如果需要其他版本的gcc,可以使用pacman的搜索功能:
pacman -Ss 关键词
然后将包名替换进行安装即可:
pacman -S 包名
2、安装和配置git
和gcc一样,git也有多个版本,我们同样安装ucrt64仓库中的git:
pacman -S mingw-w64-ucrt-x86_64-git