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.pswp.cn/bicheng/75235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75235.shtml
英文地址,請注明出處:http://en.pswp.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接口播放出去&…