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

  • 「Pygors跨平台GUI」2:安装MinGW-w64、MSYS2还是WSL2已关闭评论
  • 71 次浏览
  • A+
所属分类:linux技术
摘要

「Pygors系列」一句话导读:MinGW-w64只有编译器,MSYS2带着更新环境,WSL2实用性比较高

「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

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文件。

 

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

 

安装与配置

  • 只需编译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

 

(全文完)