MSYS2教程
一、安装 MSYS2
- 下载 MSYS2 安装程序
- 访问 MSYS2 官方网站:MSYS2 官网。
- 下载适合你的系统的 MSYS2 安装程序(通常是 64 位版本)。
- 安装 MSYS2
- 运行下载的安装程序。
- 按照提示完成安装,建议将 MSYS2 安装到
C:\msys64等不包含空格或特殊字符的路径。 - 安装完成后,点击 Finish。
- 初始化 MSYS2 环境
- 安装完成后通常会直接启动 UCRT64 环境;现在不确定选哪个环境时,优先使用 UCRT64。
- 先完整更新系统:
pacman -Syu- 如果核心组件更新后提示关闭终端,关闭所有 MSYS2 窗口,重新打开 UCRT64 后再次执行:
pacman -Syu
- 如果核心组件更新后提示关闭终端,关闭所有 MSYS2 窗口,重新打开 UCRT64 后再次执行:
二、将 MSYS2 添加到终端
- 为 Windows Terminal 添加配置
运行 Windows Terminal 后,按照下面步骤新增 Msys2 shell- 点击标题栏右边的向下指示符,选择
Settings - 左边侧栏,下边,点击
Add a new profile - 选择一个已经存在的 shell,点击
Duplicate,即基于原存 shell 创建新 shell - 主要设置项
- Name: 如
MSYS2 UCRT64 - Command line:
C:/msys64/msys2_shell.cmd -defterm -here -no-start -ucrt64 - Starting directory:
C:/msys64/home/%USERNAME% - Icon:
C:/msys64/msys2.ico
- Name: 如
- 点击
Save保存 - 需要其他环境时,再把最后的
-ucrt64换成对应参数,例如-clang64。旧的 MINGW64 正在逐步弃用,新配置不建议再把它作为默认环境。
- 点击标题栏右边的向下指示符,选择
- 为 VS Code 配置终端
- 打开 VS Code,按
Ctrl + Shift + P打开命令面板,选择 “Preferences: Open Settings (JSON)”。 - 添加以下内容:
"terminal.integrated.profiles.windows": { "MSYS2 UCRT64": { "path": "C:/msys64/msys2_shell.cmd", "args": ["-defterm", "-here", "-no-start", "-ucrt64"] } }, "terminal.integrated.defaultProfile.windows": "MSYS2 UCRT64"
- 打开 VS Code,按
- 从 Windows 终端调用 MSYS2 工具
- 不建议默认把
C:\msys64\usr\bin整体加入系统Path。其中很多程序属于 MSYS/Cygwin 环境,和原生 Windows 工具混用可能出现路径转换、命令覆盖等问题。 - 平时直接通过 UCRT64 / MSYS2 终端使用最稳。如果只是想从 CMD 或 PowerShell 调用某个原生工具,可按实际需要添加对应环境的
bin,例如 UCRT64 的C:\msys64\ucrt64\bin,并避免同时混入多套 MSYS2/Cygwin 工具链。
- 不建议默认把
三、MSYS2 基础操作
MSYS2 现在常用的环境主要有:
- MSYS:提供 Bash、pacman、makepkg 等 Unix 风格工具,本身不是首选的原生 Windows 编译环境。
- UCRT64:当前默认推荐,使用 GCC + UCRT,普通 64 位 Windows 开发优先选它。
- CLANG64:使用 LLVM/Clang + UCRT。
- CLANGARM64:面向 Windows ARM64。
旧的 MINGW64 正在逐步弃用,MINGW32 也已进入 32 位环境淘汰阶段,新项目不建议再把它们作为默认选择。
常见命令
- 切换到 MSYS 环境:
msys2_shell.cmd -msys - 切换到 UCRT64 环境:
msys2_shell.cmd -ucrt64 - 切换到 CLANG64 环境:
msys2_shell.cmd -clang64
四、MSYS2 包管理
MSYS2 使用 pacman 包管理器来管理软件包。常用命令如下:
1. 更新系统
更新软件包数据库并升级所有包:
pacman -Syu
2. 搜索包
搜索某个软件包:
pacman -Ss <包名>
例如,搜索 gcc:
pacman -Ss gcc
3. 安装包
安装某个软件包:
pacman -S <包名>
例如,安装 gcc:
pacman -S mingw-w64-ucrt-x86_64-gcc
4. 卸载包
卸载某个软件包:
pacman -R <包名>
例如,卸载 gcc:
pacman -R mingw-w64-ucrt-x86_64-gcc
5. 查看已安装包
查看已安装的软件包:
pacman -Q
6. 清理缓存
清理过时的缓存:
pacman -Sc
7. 升级或者降级本地文件安装的包
如果存储库中没有合适的旧版本,您可以通过以下方式获取旧版本:
- 访问 MSYS2 包存储库MSYS2 包存储库。
- 搜索
openssl。 - 找到适合的版本(例如 1.1.x)。
- 下载
.pkg.tar.zst文件。
pacman -U <文件路径>
从本地文件安装或升级软件包。
例如:
pacman -U /path/to/package.pkg.tar.zst
如果仓库里没有需要的版本,也可以按对应项目自己的源码编译说明操作,但不要把某个项目的 ./config --prefix=... 当成所有软件通用步骤。使用 UCRT64 时,原生软件通常安装到 /ucrt64 前缀;具体构建命令以项目文档为准。
8. 查看依赖链
查看哪些软件包依赖于 mingw-w64-ucrt-x86_64-openssl:
pactree -r mingw-w64-ucrt-x86_64-openssl
9. 强制卸载
-Rdd 会跳过依赖检查,只删除指定包,不会连带删除依赖它的软件。这可能使现有软件无法运行,不应作为解决版本冲突的常规方法。
pacman -Rdd mingw-w64-ucrt-x86_64-openssl
10. 卸载相关依赖
卸载所有依赖软件(如 mingw-w64-ucrt-x86_64-python):
pacman -Rns mingw-w64-ucrt-x86_64-python
五、安装开发工具示例
安装 GCC 编译器
- 安装 GCC:
pacman -S mingw-w64-ucrt-x86_64-gcc - 验证安装:
gcc --version
如果你希望在 CMD 或 PowerShell 中直接使用 GCC:
- 打开系统的环境变量设置。
- 将以下路径添加到用户 Path:
C:\msys64\ucrt64\bin。只在确实需要从 CMD/PowerShell 直接调用 UCRT64 原生程序时添加。 - 保存后,打开 CMD 或 PowerShell,运行:
gcc --version
安装 Python
- 安装 Python:
pacman -S mingw-w64-ucrt-x86_64-python - 验证安装:
python --version
安装 Node.js
- 安装 Node.js:
pacman -S mingw-w64-ucrt-x86_64-nodejs - 验证安装:
node --version
评论将在接近此处时加载,也可点击立即加载。