2.6 MSYS2 简单使用

一、msys2介绍

核心功能与定位:

  • 原生 Windows 应用编译: 集成 MinGW-w64 工具链,可直接编译生成原生 Windows 可执行文件(不依赖第三方模拟层),支持 32/64 位架构
  • 类 Unix 开发环境: 提供 Bash Shell、GNU 工具集(如 make, grep, awk)、版本控制工具(如 Git)等,支持在 Windows 下运行 Unix/Linux 命令行程序。
  • 包管理系统: 移植自 Arch Linux 的Pacman包管理器,支持依赖解析、一键安装/更新软件包。官方仓库提供超过 3300 个预编译包(如 GCC、CMake、Python、OpenCV 等)

MSYS2 包含多个子系统:

子系统目标平台编译器运行时库典型用途安装命令(MSYS2 终端)
MSYS2POSIX 模拟GCC (Cygwin)msys-2.0.dllUnix 工具移植/包管理基础工具默认安装(无需额外命令)
MINGW32Win32 原生MinGW-w64 (i686)MSVCRT32 位 Windows 应用开发pacman -S mingw-w64-i686-toolchain
MINGW64Win64 原生MinGW-w64 (x64)MSVCRT通用 64 位应用开发pacman -S mingw-w64-x86_64-toolchain
UCRT64Win64 原生MinGW-w64 (x64)UCRT现代 Windows 应用pacman -S mingw-w64-ucrt-x86_64-toolchain
CLANG64Win64 原生LLVM/ClangUCRT/MSVCRT高性能/跨语言开发pacman -S mingw-w64-clang-x86_64-toolchain

二、msys2安装

msys2官网地址www.msys2.org
msys2下载地址msys2-installer

在这里插入图片描述

三、启动msys2

cmd进入msys2解压安装的目录,然后通过下面命令启动程序。

# 进入 mingw32环境
msys2_shell.cmd -mingw32

# 进入 mingw64环境
msys2_shell.cmd -mingw64

在这里插入图片描述

四、更换pacman源

配置镜像源 帮助页面:

更换pacman源:

# 替换镜像源
sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

# 刷新软件包数据
pacman -Sy

五、pacman常见用法

查询有哪些软件可以安装的网站:packages.msys2.org

Pacman 命令速查表:

操作命令场景说明
安装包pacman -S 包名基础安装(支持多包空格分隔)
卸载包(推荐)pacman -Rs 包名删除包+无用依赖(避免残留)
系统升级pacman -Syu必用!同步仓库并升级所有包
搜索仓库包pacman -Ss 关键词查找可用软件(简洁版:-Ssq
清理旧缓存pacman -Sc删除未安装包的缓存(安全清理)
删除孤立包pacman -Rns $(pacman -Qdtq)一键清理无用依赖包

安装软件包​:

pacman -S 包名          # 安装单个包(例:`pacman -S firefox`)
pacman -S 包1 包2       # 同时安装多个包  
pacman -Sy 包名         # 先同步仓库数据库再安装
pacman -U 本地包路径     # 安装本地包(如`.pkg.tar.zst`文件)

卸载软件包​​:

pacman -R 包名          # 删除包但保留依赖
pacman -Rs 包名         # 删除包及其未使用的依赖(**推荐**)
pacman -Rsc 包名        # 强制删除包及所有依赖(谨慎使用!)
pacman -Rns 包名        # 删除包+依赖+配置文件(彻底清理)

​系统升级​:

pacman -Syu             # 同步仓库并升级所有包(**最常用**)
pacman -Sy              # 仅刷新仓库数据库(不升级包)
pacman -Su              # 仅升级已安装包(需先执行`pacman -Sy`)

搜索与查询​​:

pacman -Ss 关键词       # 搜索仓库中匹配的包(例:`pacman -Ss editor`)
pacman -Qs 关键词       # 搜索已安装的包
pacman -Qi 包名         # 查看已安装包的详细信息(版本、依赖等)
pacman -Ql 包名         # 列出包安装的所有文件

清理缓存​​:

pacman -Sc              # 删除未安装包的缓存(**安全清理**)
pacman -Scc             # 彻底清空所有缓存(**慎用**!无法降级)

依赖管理​:

pacman -Qdt             # 列出不再被依赖的孤立包(可删除)
pacman -R $(pacman -Qdtq) # 一键删除所有孤立包

六、安装MinGW64的编译环境

注意:MSYS2的子系统没有预安装工具链,需要我们自己安装。

安装工具链:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

安装make和cmake:

pacman -S mingw-w64-x86_64-make mingw-w64-x86_64-cmake

base-devel 基础开发工具组:

  • 构建工具​​
    • make:自动化编译管理器
    • autoconf/automake:生成配置脚本和Makefile的工具
    • pkg-config:管理编译依赖库路径的工具
  • ​​版本控制与打包工具​​
    • git:代码版本控制系统
    • tar/zip/unzip:文件压缩与解压工具
  • 其他开发辅助工具​​
    • diffutils:文件差异比对工具
    • binutils:二进制工具集(如链接器 ld)

mingw-w64-x86_64-toolchain MinGW-w64 工具链:

  • 编译器套件​​
    • gcc:C 语言编译器
    • g++:C++ 编译器
    • gfortran:Fortran 编译器(可选安装)
    • gcc-ada/gcc-objc:Ada 和 Objective-C 编译器(可选)
  • 调试与分析工具​​
    • gdb:GNU 调试器
    • gdb-multiarch:支持多架构的调试器
  • ​​运行时库与依赖​​
    • crt-git:C 运行时库
    • winpthreads-git:Windows 线程库
    • libgccjit:GCC JIT 编译库
  • ​​头文件与开发支持​​
    • headers-git:系统头文件
    • libmangle-git:名称修饰解析工具

七、msys2 常见问题

(1)msys2继承外部环境变量

目的:使用MinGW终端能继承vs2019原生控制台的环境变量,使其能正常使用cl等命令
在这里插入图片描述
修改msys2_shell.cmd脚本
在这里插入图片描述
在这里插入图片描述

使用VS2019的终端启动msys2_shell.cmd
在这里插入图片描述

(2)解决link.exe冲突问题

方法1:以MSVC的link.exe绝对路径指定程序(这里使用一个脚本替代)

# mslink 脚本内容
#!/bin/sh
LINK_EXE_PATH=$(dirname "$(command -v cl)")/link
if [ -x "$LINK_EXE_PATH" ]; then
    "$LINK_EXE_PATH" $@
else
    link.exe $@
fi
exit $?

# 增加执行权限
chmod 755 mslink

# 使用 (!!注意在MinGW终端要使用的是"-",比如-c,而不是/c)
cl.exe -c hello.c
./mslink -out:hello.exe hello.obj

方法2:将MinGW的link.exe重命名
在这里插入图片描述

(3)找不到make的问题

mingw上的make名称叫为mingw32-make,可以拷贝一个并重命名为make。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值