MSYS2学习笔记

news2025/4/3 1:38:33

前言

  • 本文内容是MSys2 Documentation的学习笔记
  • 可以使用MSYS2编译QGis

学习笔记

什么是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

合规+增效 正也科技携智能营销产品出席中睿论坛

正也科技作为医药数字化领域的标杆企业&#xff0c;受邀参展第二届中睿医健产业企业家年会暨第十三届中睿医药新春论坛&#xff0c;本次论坛以“合力启新程”为主题&#xff0c;吸引了800多位医药健康企业的董事长、总经理参与&#xff0c;并通过主论坛、分论坛、路演等形式探讨…

计算机网络 TCP/IP参考模型

目录 TCP IP模型预览 OSI和TCP的相同点 OSI和TCP的不同点 层参考模型 层参考模型的数据封装与解封装 TCP IP模型预览 OSI和TCP的相同点 OSI和TCP的不同点 层参考模型 层参考模型的数据封装与解封装

JSON的基础知识

文章目录 前言json协议的基本格式json 数组类型 的语法规则json协议报文的实例json常见的一些格式错误在gd32中使用cjson库小结 前言 json协议在互联网应用&#xff0c;物联网应用中都会用到。所谓工欲善其事必先利其器&#xff0c;我们需要学习了解json协议的具体格式&#xf…

区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区…

11 配置Hadoop集群-免密登录

第一课时 一、复习导入 前面的课程中我们在虚拟机上安装并测试使用了hadoop的示例程序wordcount&#xff0c;并且在准备好了集群的同步工具&#xff0c;那接下来&#xff0c;我们就可去配置hadoop集群了。 二、授新 &#xff08;一&#xff09;认识ssh命令 SSH&#xff08;Secu…

13 配置Hadoop集群-测试使用

第一课时 一、导入 前面的课程我们搭建了hadoop集群&#xff0c;并成功启动了它&#xff0c;接下来我们看看如何去使用集群。 测试的内容包括&#xff1a;1.上传文件&#xff0c;2.下载文件&#xff0c;3.运行程序 二、授新 &#xff08;一&#xff09;上传小文件 上传文件的时…

简单ELK框架搭建

简介 ELK 框架是一套开源的日志管理和分析工具&#xff0c;由 Elasticsearch、Logstash 和 Kibana 三个主要组件组成&#xff0c;现在新增了Filebeat组件&#xff0c;可以更高效的收集数据。 Elasticsearch&#xff1a;是一个分布式、高可扩展的开源搜索引擎&#xff0c;能快速…

Vue2和Vue3响应式的基本实现

目录 简介Vue2 响应式Vue2 响应式的局限性 Vue3 响应式Vue3 响应式的优点 Vue2 和 Vue3 响应式对比 简介 在 Vue 框架中&#xff0c;数据的响应式是其核心特性之一。当页面数据发生变化时&#xff0c;我们希望界面能自动更新&#xff0c;而不是手动操作 DOM。这就需要对数据进…

RCE(自增、取反、异或)

自增: 也就是说&#xff0c;a > b&#xff0c;b > c... 所以&#xff0c;我们只要能拿到一个变量&#xff0c;其值为a&#xff0c;通过自增操作即可获得a-z中所有字符。 无字母数字构造&#xff1a; 所有敏感字符串&#xff08;ASSERT、_POST&#xff09;通过自增动态生…

【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望

本文为精简版,完整技术细节与参考文献可与作者讨论。 1. 图像修复的定义与核心目标 图像修复(Image Inpainting)是一种通过算法手段填补图像中缺失区域或移除不需要对象的技术,其核心目标是利用图像上下文信息生成与周围像素一致且视觉自然的内容。该技术通过计算机视觉和…

计算机视觉——传统数字图像处理中图像去噪原理与代码实现细节

1. 概述 在现实世界中捕获的图像常常受到噪声的影响&#xff0c;这些噪声可能来源于环境因素、信号不稳定、相机传感器问题、照明条件差、电损失等多种因素。为了进一步处理这些图像并对结果进行准确解释&#xff0c;拥有尽可能低噪声的图像至关重要。图像去噪是数字图像处理中…

【STM32】最后一刷-江科大Flash闪存-学习笔记

FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程&#xff0c;&#xff08;系统存储器用于存储原厂写入的BootLoader程序&#xff0c;用于串口…

JS实现动态点图酷炫效果

实现目标 分析问题 整个图主要是用canvas实现&#xff0c;其中难点是将线的长度控制在一定范围内、并且透明度随长度变化。 前置知识 canvas绘制点、线、三角形、弧形 // 点ctx.moveTo(this.x, this.y);ctx.arc(this.x, this.y, this.r,0, 2 * Math.PI, false);ctx.fillStyle …

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【思路篇】A题解题全流程(持续更新)

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路&#xff08;持续更新&#xff09; 写在前面&#xff1a; 1、A题、C题将会持续更新&#xff0c;陆续更新发布文章 2、赛题交流咨询Q群&#xff1a;1037590285 3、全家桶依旧包含&#xff1a; 代码、…

爱普生晶体单元FC2012AN在5G RedCap中的应用

在 5G 技术向物联网领域深度渗透的今天&#xff0c;RedCap&#xff08;5G 轻量化&#xff09;作为衔接中高速物联网场景的关键技术&#xff0c;正加速推动工业、医疗、可穿戴等领域的智能化升级。爱普生 FC2012AN 低 ESR 晶体单元凭借其突破性的小尺寸、低功耗与高稳定性设计&a…

vue 两种路由模式

一、两种模式比较 在vue.js中&#xff0c;路由模式分为两种&#xff1a;hash 模式和 history 模式。这两种模式决定了URL的结构和浏览器历史记录的管理方式。 1. hash 模式带 #&#xff0c;#后面的地址变化不会引起页面的刷新。换句话说&#xff0c;hash模式不会将#后面的地址…

Java-servlet(十)使用过滤器,请求调度程序和Servlet线程(附带图谱表格更好对比理解)

Java-servlet&#xff08;十&#xff09;使用过滤器&#xff0c;请求调度程序和Servlet线程 前言一、Servlet 间通信&#xff08;了解即可&#xff09;二、Servlet 请求处理&#xff1a;getAttribute 和 getParameter 的区别与应用1.getAttribute 方法2.getParameter 方法 三、…

ue5 学习笔记 FPS游戏制作35 GameMode与GameInstance

文章目录 相似GameMode介绍声明设置生效调用 GameInstance介绍声明设置生效调用 相似 两者都用来保存公共的数据和方法 数据都在内存里&#xff0c;关闭程序后数据消失 GameMode 介绍 生命周期跟随关卡&#xff0c;关卡销毁GameMode也跟随销毁 内部可以定义属性和方法 声明…

山洪预警秒级响应-AI本地化部署在极端降雨短临预测中的技术突破。AI智能体开发与大语言模型的本地化部署、优化技术

极端降雨预测的技术痛点与边缘破局 ‌1. 传统预警系统的三重瓶颈‌ ‌延迟致命‌&#xff1a;WRF模式在1km分辨率下3小时预报耗时>45分钟&#xff0c;错过山洪黄金响应期 ‌地形干扰大‌&#xff1a;复杂地形区&#xff08;如横断山脉&#xff09;降水预测误差超50% ‌数…

矿山自动化监测解决方案

1.行业现状 为贯彻落实《中共中央国务院关于推进安全生产领域改革发展的意见》《“十四五”矿山安全生产规划》&#xff08;应急〔2022〕64号&#xff09;、《国务院安委会办公室关于加强矿山安全生产工作的紧急通知》&#xff08;安委办〔2021〕3号&#xff09;等有关工作部署…