MSYS2&MinGW 载与安装、Pacman常用命令
一、MSYS2 介绍
MSYS2 官网:MSYS2 : https://www.msys2.org/
MSYS2(Minimal SYStem 2)是一个集成了大量的GNU工具链、工具和库的开源软件包集合。它提供了一个类似于Linux的shell环境,可以在Windows系统中编译和运行许多Linux应用程序和工具。
MSYS2基于MinGW-w64平台,提供了一个完整的开发环境,包括GCC编译器、GDB调试器、Make、Git版本控制系统和许多其他开发工具。除了常用的开发库和工具之外,MSYS2还提供了许多专门针对Windows平台的库和工具,方便开发人员进行跨平台开发和移植工作。
由于MSYS2拥有比较完整的Linux工具链和库,因此它成为了许多跨平台开发和移植项目的首选工具。另外,使用MSYS2也可以轻松地在Windows系统中搭建一个类似于Linux的软件开发环境,方便开发人员进行开发和调试工作。
二、MSYS2、Cygwin、MinGW-w64 区别与联系
MSYS2是一个包含MinGW-w64工具链、GNU工具集和一些开源库的平台,它提供了一种在Windows上编译和运行Unix/Linux程序的方式。MSYS2与MinGW-w64相似,但比MinGW-w64更完整和稳定,提供了Pacman包管理器以方便用户安装和管理软件包。
MinGW-w64是一个Windows下的C/C++编程工具集,它提供了运行在Windows上的GNU工具集和GCC编译器。MinGW-w64与MSYS2类似,但主要用于编译Windows本地应用程序,而非Unix/Linux程序。MinGW-w64也可以用于交叉编译,为其他平台生成Windows可执行文件。
Cygwin是一个在Windows平台上运行的兼容性层,提供了类Unix环境的工具和开发库。Cygwin将Unix程序编译为Windows本地代码,然后在Windows上运行。它提供了最完整的Linux/Unix环境,但相对于MSYS2和MinGW-w64,Cygwin的性能较差。
因此,MSYS2适用于需要在Windows上编译和运行Unix/Linux程序的场景,MinGW-w64适用于编译Windows本地应用程序的场景,Cygwin适用于需要最完整的Linux/Unix环境的场景。
三、MSYS2下载与安装
Refer:windows安装MSYS2(mingw && gcc)_msys2安装-CSDN博客
1. 安装包下载
Github 托管地址:Releases · msys2/msys2-installer · GitHub
或者从官网:MSYS2 官网:https://mirrors.aliyun.com/msys2/distrib/
2. 安装

3.设置系统环境变量
将 MSYS2 安装目录下的 msys64\mingw64\bin 目录添加到系统环境中的Path中
例如:C:\msys64\mingw64\bin
四、Pacman 软件包管理(基于MSYS2 MSYS)
引用:https://wiki.archlinuxcn.org/wiki/Pacman
Pacman 是一个软件包管理器,作为 ArchLinux 发行版的一部分.
pacman 是在 Linux 中管理软件包的实用程序。它使用简单的压缩文件作为包格式,并维护基于文本的包数据库(更多层次结构),以防万一需要进行一些手动调整的情况
4.1 第一次运行更新包数据库和基础包, 从 Windows “开始”菜单运行“MSYS2 MSYS”。进入 MSYS 命令行窗口:
pacman -Syu
除非您的安装文件是最新的,否则将需要两个步骤。
4.2 使用以下命令更新其余基本软件包
pacman -Su
4.3 查询包数据库中,是否包含某个包,并显示其状态
pacman -Ss libcurl
4.4 安装基础包
pacman -S base-devel
e.g.

部署 mingw32 开发环境:pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-i686-toolchain
部署 mingw64 开发环境:pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-toolchain
五、mingw-w64 工具集/链环境安装 与 gcc编译器验证(基于MSYS2 MINGW64)
MinGW官网: https://www.mingw-w64.org/downloads/
MinGW程序托管位置: https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
# 1. 更新基础包
pacman -Syu
# 2. 安装开发工具链
pacman -Ss "toolchain$" | grep mingw64
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
# 出现提示时,直接回车确认安装所有13个组件
# 3. 安装构建工具
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-autotools
# 4. 安装调试工具
pacman -S mingw-w64-x86_64-gdb
# 其他:
pacman -S mingw-w64-x86_64-pcre

要使用 mingw-w64 GCC 开始构建,请关闭此窗口并从 Windows “开始”菜单运行“MSYS2 MinGW64”。进入 MinGW64 命令行窗口:
现在您可以调用make或gcc构建适用于 Windows 的软件。(不必要但可以向 path 环境变量添加 MinGW-w64 工具链的 bin 文件路径,路径 path = C:\msys64\mingw64\bin, 在CMD窗口编译。)
# 检查编译器
gcc --version
# 检查构建工具
make --version
autoconf --version
automake --version
# 检查依赖库
ls /mingw64/ lib /libpcre*
ls /mingw64/lib/libtre*

六、mingw-w64 搜/装/卸载 boost 库 (基于MSYS2 MINGW64)
# pacman -Ss boost // 搜寻 # pacman -S mingw-w64-x86_64-boost // 安装
# pacman -R mingw-w64-x86_64-boost // 删除
# pacman -Rs mingw-w64-x86_64-boost // 卸载 移除已安装不需要软件包
# pacman -Rsc mingw-w64-x86_64-boost // 删除一个包,所有依赖

七、cmake 构建 (基于MSYS2 MINGW64)
findpackage(Xxx REQUIRED COMPONENTS yyy REQUIRED) 相关变量
<packagename>Config.cmake 默认查找目录:${CMAKE_PREFIX_PATH}/lib/cmake/<packagename-version>
${CMAKE_PREFIX_PATH} = <MSYS安装目录>\<mingw-w64工具链目录>
${XxxConfig.cmake} = <MSYS安装目录>\<mingw-w64工具链目录>\lib\cmake\Xxx-1.1.0\XxxConfig.cmake
@e.g.
D:\msys64\mingw64\lib\cmake\Boost-1.85.0\BoostConfig.cmake
find_package(Boost REQUIRED COMPONENTS filesystem system json program_options date_time safe_numerics)
附录: pacman 命令总结
搜索
pacman -Ss 关键字: 在远端仓库(包数据库)中搜索匹配字符串的软件包(本地已安装的会标记) # pacman -Ss boost pacman -Sl <repo>:显示软件仓库中所有软件的列表 # pacman -Sl mingw64 |grep boost pacman -Si <软件名>:显示软件包详细信息 # pacman -Si mingw-w64-x86_64-boost
pacman -Qs 关键字: 在本地已安装包中搜索匹配字符串的软件包 # pacman -Qs boost pacman -Qu: 列出所有可升级的软件包 pacman -Qt: 列出不被任何软件要求的软件包 pacman -Q 软件名: 查看软件包是否已安装,已安装则显示软件包名称和版本 pacman -Qi 软件名: 查看某个软件包信息,显示较为详细的信息,包括描述、构架、依赖、大小等等 pacman -Ql 软件名: 列出软件包内所有文件,包括软件安装的每个文件、文件夹的名称和路径
安装
pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。 pacman -S --needed 软件名1 软件名2: 安装软件,但不重新安装已经是最新的软件。 pacman -Sy 软件名:安装软件前,先从远程仓库下载软件包数据库(数据库即所有软件列表)。 pacman -Sv 软件名:在显示一些操作信息后执行安装。 pacman -Sw 软件名: 只下载软件包,不安装。
更新/升级
pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。 pacman -Su: 升级所有已安装的软件包。 pacman -Syu 结合上面两个操作 #在msys2中 pacman -Syu后需要重启一下msys2(关掉shell重新打开即可)。
卸载
# usage: pacman {-R --remove} [options] <package(s)>
pacman -R 软件名: 该命令将只删除包,保留其全部已经安装的依赖关系
pacman -Rv 软件名: 删除软件,并显示详细的信息
pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。
pacman -Rsc 软件名: 删除软件,并删除所有依赖这个软件的程序,慎用
pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖
清理
pacman -Sc:清理已删除的包文件,从缓存目录( /var/cache/pacman/pkg/)
pacman -Scc:清理所有的缓存文件。
浙公网安备 33010602011771号