MSYS2学习笔记

前言

学习笔记

什么是MSYS2?

MSYS2(Minimal System 2)是一个为Windows平台打造的软件开发环境和包管理系统,它结合了Cygwin的POSIX兼容层、Arch Linux的pacman包管理器以及MinGW-w64工具链,为开发者提供了强大的开发工具集合。

  • 我理解就是在windows上搭建了一套类linux的开发环境

MSYS2的核心功能

  1. 原生Windows程序开发:
    提供完整的GCC工具链(包括gcc、g++、gdb等)
    支持构建32位和64位Windows原生应用
    包含最新的UCRT(Universal C Runtime)支持
  2. ​类Unix开发环境:
    提供bash shell和数百个Unix工具(grep、sed、awk等)
    支持shell脚本和Makefile
    提供熟悉的Unix文件系统布局(/usr, /etc等)
  3. 强大的包管理系统:
    基于Arch Linux的pacman包管理器
    包含超过3000个预编译软件包
    支持自动解决依赖关系

MSYS2 vs Other Projects

其他类似项目

  • WSL

WSL,全称 Windows Subsystem for Linux,是微软为Windows 10及更高版本(包括Windows Server 2019和后续版本)提供的一个兼容层,它允许用户直接在Windows操作系统上运行原生的Linux二进制可执行文件(ELF格式)。这意味着开发者可以在不安装虚拟机或双系统的情况下,在Windows中使用Linux环境进行开发工作。WSL非常适合那些需要同时使用Windows应用程序以及Linux工具链、库或者服务的用户。

  • Chocolatey

Chocolatey 是一个用于 Windows 的包管理器,类似于 Linux 中的 APT 或 YUM。它允许用户通过命令行界面安装、升级和卸载软件包。Chocolatey 旨在简化 Windows 系统上的软件管理和自动化过程,使得维护系统软件变得更加容易。

  • Cygwin

Cygwin 是一个在 Windows 操作系统上运行的大型集合,它提供了一套工具和库,使得许多流行的类 Unix 应用程序能够在 Windows 上编译并运行。通过 Cygwin,用户可以获得一个与 Linux 或其他类 Unix 系统类似的环境,包括 shell(如 bash)、文件系统接口、大量 GNU 工具以及其他开源软件。

  • Arch Linux

Arch Linux 是一个轻量级且灵活的Linux发行版,它遵循KISS(Keep It Simple, Stupid)原则,旨在为用户提供最大程度的自由和控制

Msys2和其他类似项目比较

MSYS2 vs WSL
  • MSYS2
    ✅ 支持构建原生Windows应用程序
    ✅ 生成的程序直接运行于Windows环境
    ✅ 提供完整的MinGW-w64工具链

  • WSL
    🔄 仅支持交叉编译
    💡 适合场景:

    • 需要Linux命令行工具
    • 开发最终部署在Linux服务器的应用
    • 需要完整Linux环境
MSYS2 vs Chocolatey
特性MSYS2Chocolatey
包构建方式从源码构建打包预编译二进制
软件类型主要是开源工具链开源/闭源软件混合
主要用途开发环境搭建软件安装管理
包管理pacmanchoco
MSYS2 vs Cygwin
  • MSYS2优势:
    • 专注于Windows原生开发
    • 更现代化的工具链(UCRT)
    • 更好的性能表现
  • Cygwin特点:
    • 提供更完整的POSIX兼容性
    • 适合移植Unix软件到Windows
    • 包含更多Unix系统组件

MSYS2包管理

仓库分类

MSYS2 维护着 ​6个核心软件包仓库,分为两大类型:

传统仓库 (Classical)

  1. msys2

    • 基础系统组件仓库
    • 包含核心开发工具和依赖项
    • 路径前缀:/usr
  2. mingw32

    • 32位MinGW-w64工具链
    • 使用MSVCRT运行时
    • 包名前缀:mingw-w64-i686-
  3. mingw64

    • 64位MinGW-w64工具链
    • 使用MSVCRT运行时
    • 包名前缀:mingw-w64-x86_64-

现代仓库 (Modern)

  1. ucrt64 (推荐)

    • 64位UCRT(Universal C Runtime)工具链
    • Windows 10+原生支持
    • 包名前缀:mingw-w64-ucrt-x86_64-
  2. clang32

    • 32位LLVM/Clang工具链
    • 兼容传统32位系统
    • 包名前缀:mingw-w64-clang-i686-
  3. clang64

    • 64位LLVM/Clang工具链
    • 现代编译优化支持
    • 包名前缀:mingw-w64-clang-x86_64-

架构对比表

仓库类型位宽工具链运行时前缀格式
mingw3232位GCCMSVCRTmingw-w64-i686-*
mingw6464位GCCMSVCRTmingw-w64-x86_64-*
ucrt6464位GCCUCRTmingw-w64-ucrt-x86_64-*
clang3232位LLVMMSVCRTmingw-w64-clang-i686-*
clang6464位LLVMUCRTmingw-w64-clang-x86_64-*

最佳实践建议
新项目建议优先选用 ​ucrt64 仓库,因其采用Windows现代运行时环境,具有更好的兼容性和性能表现。

pacman

在这里插入图片描述

  • pacman -Ss <name or part of the name of the package> 包查找命令
  • pacman -S <name of the package> 包安装命令
  • pacman -R <name of the package> 包删除
  • pacman -U <packagefile.tar.xz> 安装特定版本包
  • pactree mingw-w64-x86_64-gettext 查找依赖
  • pacman -Qo <full file path> 查看文件属于哪个包
  • pacman -Ql <name of the package> 查看包包含的文件

pacboy

pacboy 是 MSYS2 提供的特殊包管理工具,专门用于简化 MinGW-w64 和 Clang 环境的包管理操作。它作为 pacman 的封装器

在这里插入图片描述

  • 通过后缀指定目标环境:
    :i → 安装到 mingw32
    :x → 安装到 mingw64
    :u → 安装到 ucrt64
    :c → 安装到 clang32
    :l → 安装到 clang64
    示例:pacboy install python3:u 会在 ucrt64 环境安装 Python

  • 批量操作支持
    支持同时为多个环境安装相同软件包
    示例:pacboy install gcc:i:x:u 会同时安装三个环境的 GCC

  • 注意事项
    需要先安装 pactoys 包:pacman -S pactoys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷动软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值