MSYS2学习笔记

前言

  • 本文内容是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.mzph.cn/bicheng/75235.shtml

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

相关文章

gnvm切换node版本号

1. gnvm下载官网 GNVM - Node.js version manager on Windows by Go 2. 安装 2.1 不存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到任意文件夹&#xff0c;并将此文件夹加入到环境变量 Path。 2.2 存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到 Node.js 所在的文件夹。 2.…

目标检测 AP 计算 实例 python

以下是使用 Python 实现目标检测中 ‌Average Precision (AP)‌ 计算的完整实例&#xff0c;包含代码和注释。这里以 ‌Pascal VOC 标准‌ 为例&#xff08;IoU阈值0.5&#xff09;。 步骤1&#xff1a;准备数据 假设&#xff1a; gt_boxes: 真实标注框列表&#xff0c;格式为 …

AWS用Glue读取S3文件上传数据到Redshift,再导出到Quicksight完整版,含VPC配置

1. 项目背景 AWS的官方文档&#xff0c;关于Glue和Vpc配置部分已经比较旧了&#xff0c;按照官方文档配置的流程始终跑不通&#xff0c;花了一番时间和波折后&#xff0c;才终于完整的跑通了。 在数据分析和商业智能&#xff08;BI&#xff09;领域&#xff0c;我们常需要将存…

SpringBoot详细教程(持续更新中...)

SpringBoot 一、概述 Springboot有哪些特点呢&#xff1f;或者说它跟Spring比有哪些优点呢&#xff1f; 1、起步依赖 通俗的说&#xff0c;就是一个依赖包含了很多个依赖&#xff1b;好处是引入所需的依赖更加简便&#xff0c;而且有效避免了依赖之间的版本冲突问题&#xf…

亚马逊玩具品类技术驱动型选品策略:从趋势洞察到合规基建

一、全球玩具电商技术演进趋势 &#xff08;技术化重构原市场背景&#xff09; 数据可视化分析&#xff1a;通过亚马逊SP-API抓取2023年玩具品类GMV分布热力图 监管技术升级&#xff1a; 美国CPSC启用AI质检系统&#xff08;缺陷识别准确率92.7%&#xff09; 欧盟EPR合规接口…

spring boot 整合redis

1.在pom文件中添加spring-boot-starter-data-redis依赖启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.编写三个实体类 RedisHash("p…

python 语法篇(一)

目录 1 正则匹配注意点11.1 正则匹配字符串写法1.2 创建re函数&#xff08;1&#xff09;re.search()--搜索第一个匹配项&#xff08;2&#xff09;re.match() - 从字符串开头匹配&#xff08;3&#xff09;re.findall() - 返回所有匹配项的列表&#xff08;4&#xff09;re.fi…

深度学习Note.4(机器学习实践)

线性回归 零. 1.paddle库的一些API paddle.rand(shape,dtype None, name None) *随机生成符合均匀分布的Tensor paddle.nromal(mean 0.0, std 1.0, shape None, name None) *随机生成符合正态分布的Tensor *输入正态分布均值&#xff0c;标准差&#xff0c; 生成结果的…

UE5学习笔记 FPS游戏制作29 更换武器时更换武器的图标

文章目录 制作物体图标UI添加获取武器图标的方法使用事件分发器&#xff0c;通知UI要换枪定义事件分发器调用事件分发器注册事件分发器 制作物体图标UI 在Fpp-UI上添加一个图片&#xff0c;改名为五weaponIcon&#xff0c;勾选SizeToContent,锚点放在右下角&#xff0c;对齐改…

RCE(自增、取反、异或)

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

从架构角度谈谈云原生架构

1、云原生架构起源 随着云服务商的成熟&#xff0c;客户面临着将服务直接使用云平台的服务部署在云平台上&#xff0c;或者采用本地和云上混合部署的模式来对外提供服务&#xff0c;从解决方案的角度来说&#xff0c;采用云原生架构的优点有&#xff1a; 可以利用云服务的管理…

Zcanpro搭配USBCANFD-200U在新能源汽车研发测试中的应用指南(周立功/致远电子)

——国产工具链的崛起与智能汽车测试新范式 引言&#xff1a;新能源汽车测试的国产化突围 随着新能源汽车智能化、网联化程度的提升&#xff0c;研发测试面临三大核心挑战&#xff1a;多协议融合&#xff08;CAN FD/LIN/以太网&#xff09;、高实时性数据交互需求、复杂工况下…

【Verilog】实验十 带倒计时交通灯控制电路设计

目录 一、实验目的 二、实验环境 三、实验任务 四、实验原理与实验步骤 1. 实验原理 2. 实验步骤 五、实验思考 代码 TOP.v trafic2_2.v shumaguan.v clk_div.v 一、实验目的 1. 掌握同步有限状态机的设计方法。 2. 采用状态机的设计方法&#xff0c;设计实现带倒…

Linux : System V 共享内存

目录 一 前言 二 共享内存概念 三 共享内存创建 四 查看共享内存 五 共享内存的删除 六 共享内存的关联 七 共享内存去关联 八 共享内存的使用&#xff08;通信&#xff09; 九 共享内存的特点 一 前言 共享内存区是最快的IPC形式&#xff08;进程间通信&#xff1…

Spring Cloud 2023.x安全升级:OAuth2.1与JWT动态轮换实战

引言&#xff1a;当安全遇上云原生&#xff0c;零停机密钥轮换成为刚需 在微服务架构中&#xff0c;OAuth2.1与JWT已成为身份验证的黄金标准&#xff0c;但传统方案存在两大痛点&#xff1a; 密钥轮换风险&#xff1a;手动替换JWT密钥需重启服务&#xff0c;导致短暂鉴权中断&…

创建私人阿里云docker镜像仓库

一.登录阿里云 https://cr.console.aliyun.com/cn-hangzhou/instances 二.创建个人实例 【实例列表】 》【创建个人实例】 》【设置Registry登录密码】 三.创建命名空间 步骤&#xff1a;【个人实例】》【命名空间】》【创建命名空间】 注:一个账号最多可以创建3个命名空…

oracle基础知识视图的定义和应用

1.1 视图的定义 视图(View)是数据库中非常重要的内容&#xff0c;在实际开发中必须学会视图的编写。 用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。视图是可以嵌套的。 视图的定义存在数据库中&#xff0c;与此定义相关的数据并没有再存一份于数据库中…

边缘计算:工业自动化的智能新引擎

在工业4.0的浪潮中&#xff0c;工业自动化正经历着前所未有的变革。随着物联网&#xff08;IoT&#xff09;技术的普及&#xff0c;越来越多的工业设备被连接到网络中&#xff0c;产生了海量的数据。然而&#xff0c;传统的云计算架构在处理这些实时性要求极高的工业数据时&…

12-SpringBoot3入门-项目打包和运行

1、打包 1&#xff09;打包插件 pom.xml <!--SpringBoot应用打包插件--> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plu…

【PCIE711-214】基于PCIe总线架构的4路HD-SDI/3G-SDI视频图像模拟源

产品概述 PCIE711-214是一款基于PCIE总线架构的4路SDI视频模拟源。该板卡为标准的PCIE插卡&#xff0c;全高尺寸&#xff0c;适合与PCIE总线的工控机或者服务器&#xff0c;板载协议处理器&#xff0c;可以通过PCIE总线将上位机的YUV 422格式视频数据下发通过SDI接口播放出去&…