首页 > 其他分享 >「Pygors跨平台GUI」2:安装MinGW-w64、MSYS2还是WSL2

「Pygors跨平台GUI」2:安装MinGW-w64、MSYS2还是WSL2

时间:2024-05-16 13:53:03浏览次数:27  
标签:MSYS2 Windows 安装 w64 跨平台 MinGW Linux Pygors

「Pygors系列」一句话导读:

MinGW-w64只有编译器,MSYS2带着更新环境,WSL2实用性比较高

 

历史与渊源

 

  Windows平台 Linux平台
二进制兼容 WSL2:运行Linux程序 Wine:运行Windows程序
接口兼容 CygWin:编译Linux程序 Winelib:编译Windows程序
编译器兼容 MinGW-w64:编译Linux程序  

 

Cygwin

原 Cygnus 出品(已被红帽收购),目前是 RedHat 名下的项目。项目的目的是提供运行于 Windows 平台的类 Unix 环境(以 GNU 工具为代表),为了达到这个目的,Cygwin 提供了一套抽象层 dll,用于将部分 Posix 调用转换成 Windows 的 API 调用,实现相关功能。这里面最典型的,最基本的模拟层就是那个 cygwin1.dll。除此之外,随着 Linux 系统的发展壮大,目前的 Cygwin 已经不仅仅提供 POSIX 兼容,因此也顺带多了更多模拟层的依赖关系。

 

MinGW

Minimalist GNU for Windows,用于开发原生(32位) Windows 应用的开发环境。它主要提供了针对 win32 应用的 GCC、GNU binutils 等工具,以及对等于 Windows SDK(的子集)的头文件和用于 MinGW 版本 linker 的库文件(so、a等,而不是 VC 的 lib)。

 

MSYS

由于 MinGW 本身仅代表工具链,而在 Windows 下,由于Windows的terminal cmd窗口使用感受太差,以及配套的命令行工具不够齐全,因此,MinGW 开发者从曾经比较旧的 Cygwin 创建了一个分支,也用于提供类 Unix 环境。但与 Cygwin 的大而全不同,MSYS 是冲着小巧玲珑的目标去的,所以整套 MSYS 以及 MinGW,主要以基本的 Linux 工具为主,大小在 200M 左右,并且没有多少扩展能力。

 

MinGW-w64

A complete runtime environment for gcc&llvm for 32 and 64 bit Windows.

前面提到的 MinGW,是针对 32 位 Windows 应用开发的。MinGW-w64 则是新一代的 MinGW,支持更多的 API,支持 64 位应用开发,甚至支持 32 位 host 编译 64 位应用以及反过来的“交叉”编译。除此之外,它本身也有 32 位和 64 位不同版本,其它与 MinGW 相同。

 

MSYS2

Software Distribution and Building Platform for Windows

由于 MinGW 万年不更新,MSYS 更是,Cygwin的许多新功能 MSYS 没有同步过来,于是 Alex 等人建立了新一代的 MSYS 项目。仍然是 fork 了 Cygwin(较新版),但有个更优秀的包管理器 pacman

MSYS2 的主要重点是为本地 Windows 软件提供构建环境,并且使用 Cygwin 的部分保持在最低限度。 MSYS2 为 GCC、mingw-w64、CPython、CMake、Meson、OpenSSL、FFmpeg、Rust、Ruby 等提供最新的原生构建。

 

WSL

Windows Subsystem for Linux(适用于Windows的Linux子系统)

WSL的核心是模拟Linux内核,因而文件可放在本地,缺点是兼容性与文件系统性能比较差。

 

WSL2

适用于Windows的Linux子系统体系结构的一个新版本,它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。

WSL2的核心是使用真正的Linux内核,增强兼容性和性能的同时,缺点是使用模拟硬盘存放Linux文件。

 

 

安装与配置

  • 只需编译Linux程序,安装MinGW
  • 需要编译Linux程序和Linux工具环境,安装MSYS2
  • 直接运行Linux程序,安装WSL2

 

安装MinGW

MinGW安装器:

  下载地址1:MinGW下载

  下载地址2:SourceForge (MinGW w64)

  下载地址3:win-builds (MinGW w64)

 

安装MSYS2

访问MSYS2官网,下载官网首页的安装包。

https://mirrors.tuna.tsinghua.edu.cn/msys2/

http://mirrors.ustc.edu.cn/msys2/

 

Windows 7支持

2022-12-16 - Dropping Windows 7 support for the MSYS2 installer

The latest release of the MSYS2 installer (v2022-12-16) has dropped support for Windows 7. It will show an error message and abort if started on Windows 7.

 

安装完成以后,执行下面命令,建议执行两遍,第一遍执行完会自动退出。
或者第一遍执行pacman -Sy,第二遍执行pacman -Su

 

pacman 是Arch Linux 的包管理器,类似于ubuntu的apt,详细参考 pacman命令介绍
-S是主命令,安装安装的包的作用,后面的是子命令。
-u, --sysupgrade 升级所有已安装的软件包
-y, --refresh 从服务器下载新的软件包数据库

 

2.将msys2的默认镜像改成国内的地址,这样以后msys的下载速度会比较快。
进入msys2安装路径下的pacman.d文件夹,里面的mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys三个文件是我们要修改的。

  

安装需要用到的包
利用-S命令安装所需要的包,像base-devel和mingw-w64-x86_64-toolchain都是一类包,我们可以通过序号选择。

pacman -S base-devel

pacman -S mingw-w64-x86_64-toolchain

 

ucrt,全称Universal C Runtime,通用C运行时库。
msvcrt,全称Microsoft Visual C Runtime Library,其实他和ucrt是一个东西。提供了print,malloc等基本C语言库函数的实现,只是ucrt比较新,win10版本以后作为系统组件。

【异常处理模型:】
异常处理在开发中非常重要,你在开发的过程中,大部分的时间会耗在处理各种异常情况上。
【64位:】
如果你之前选择了 64位,则这里有两个异常处理模型供你选择,seh 是新发明的,而 sjlj 则是古老的。
seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。
【32位:】
选择了 32位 后,则可以用 dwarf 和 sjlj 两种异常处理模型。同样的,dwarf 的性能要优于 sjlj ,可以它不支持 64位 。
操作:建议选择 dwarf

 

安装WSL2

 

先决条件

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 

  

安装 WSL 命令

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入 wsl --install 命令,然后重启计算机。

 

WSL 的基本命令参考

https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

 

(全文完)

 

标签:MSYS2,Windows,安装,w64,跨平台,MinGW,Linux,Pygors
From: https://www.cnblogs.com/windfic/p/17202855.html

相关文章

  • 使用微信文件助手跨平台互联网互传文件
    微信的文件助手有下面这些版本:网页版https://filehelper.weixin.qq.com/移动版PC版https://weixin.qq.com/这些之间都是可以互传文件的。这样一台机器登录文件传输助手网页版,一台机器登录PC版本的微信,两台互联网上的机器互传文件就可以实现了。从网上看,2021年12月31日......
  • libvips 一个最好用的高性能、低内存、跨平台的图片处理库
    一个可以媲美OpenCV的开源库,它具有高性能、低内存、跨平台、无内存泄漏的特性。项目简介这是用C++开发的图像处理库,支持的API超过300多个,涵盖了算术、颜色、图片转换、卷积、形态、马赛克、合并、切割等。支持多种图像格式,包括:JPEG、JPEG2000、JPEG-XL、TIFF、PNG、WebP、HEIC......
  • 【转载】Godot-GDExtension C++ 环境搭建 (Docker+MinGW/跨平台)
    本文原链接见 Godot-GDExtensionC++环境搭建(Docker+MinGW/跨平台)|Convexwf'sKirakiraBlog。Godot在4.X之后推出了GDExtension,通过第三方绑定扩展功能,目前官方支持的语言只有C++。通过使用GDExtensionC++编写扩展插件,可以作为库文件在Godot中交互使用。GDExten......
  • .NET开源、功能强大、跨平台的图表库 - LiveCharts2
    https://www.cnblogs.com/Can-daydayup/p/18166862 思维导航前言项目介绍项目源代码BlazorWasm中快速使用项目更多图表截图项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言今天大姚给大家分享一个.NET开源(MITLicense)、功能强大、简单、灵活、跨......
  • .NET开源免费的跨平台框架 - MAUI(附学习资料)
    前言前几天分享了一个.NETMAUI开源免费的UI工具包-Uranium,然后技术群有不少同学问.NETMAUI是不是免费的?能做什么?今天特意写这篇文章来介绍一下.NET开源、免费(基于MITLicense)的跨平台框架:MAUI。.NETMAUI官方介绍.NET多平台应用UI(.NETMAUI)是一个跨平台框架,用于使用......
  • 12_QT跨平台运行之使用QT控制蜂鸣器
    QT跨平台运行之使用QT控制蜂鸣器QT****下操作硬件我们在QT上要怎么操作驱动呢?比如,我们要点亮一个led灯,我们在C语言中可以使用open,read,write,ioctl函数来进行操作,但是QT上我们使用的语言是C++,那我们要怎么来操作驱动呢?我们可以使用C和C++进行混合编程,我们先来看一个控制蜂鸣器的......
  • 11_QT跨平台运行之把QT程序交叉编译到ARM开发板
    QT跨平台运行之把QT程序交叉编译到ARM开发板交叉编译QT代码步骤一:给QT程序布局,然后在构造函数添加自动设置屏幕大小的代码。代码如下:#include<QDesktopWidget>#include<QStyle>#include<QRect>QDesktopWidget*deskTopWidget=QApplication::desktop();QRectdeskRec......
  • 2款Notepad++平替工具(实用、跨平台的文本编辑器)
    前言今天大姚给大家分享2款Notepad++平替工具,实用、跨平台(支持Window/MacOS/Linux操作系统平台)的文本编辑器。NotepadNextNotepadNext是一个跨平台的Notepad++的重新实现。开发是使用QtCreator和MicrosftVisualC++(msvc)编译器完成的。目前支持Window/MacOS/Linux操作......
  • uniapp 2.0可视化开发工具:提升跨平台应用开发效率的新篇章(更新版)
    摘要随着移动应用市场的不断扩大和前端技术的飞速发展,开发者们对于快速、高效构建跨平台应用的需求日益增强。uniapp作为一款优秀的跨平台应用开发框架,凭借其强大的功能和易用的特性,赢得了广大开发者的青睐。,其2.0版本的发布为开发者带来了更多的便利和可能性。其中,可视化开发......
  • JetBrains CLion 2024.1 (macOS, Linux, Windows) 发布 - C 和 C++ 跨平台 IDE
    JetBrainsCLion2024.1(macOS,Linux,Windows)-C和C++跨平台IDE请访问原文链接:JetBrainsCLion2024.1(macOS,Linux,Windows)-C和C++跨平台IDE,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsCLion-C和C++跨平台IDE用于强大语言的......