Msys2--Windows下原生开发的终极解决方案
侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计收到 1 条评论

Msys2--Windows下原生开发的终极解决方案

Logiase
2021-09-29 / 0 评论 / 4 阅读 / 正在检测是否收录...

在探索了多种编译工具和包管理器后,原来让我遗忘在角落的 Mingw , Cygwin, Msys2 引起了我的注意。

曾经的我也是个原教旨主义者(在 Windows 下做开发就要用 MSVC),但架不住 Msys2 实在是太香了。

在 Msys2 上我能看到我熟悉的 Arch 的 70% ,又让我回想起曾经使用 Arch 做主力机的时光。

Msys2 的优势

之前作为一个原教旨主义者,我极端反感如 Mingw, Cygwin 等工具,他们使用了兼容层(如 cygwin.dll, msys.dll ),通过兼容层来运行本身为 nix 系统所编写的应用(需要重新编译)。众所周知,由于 Windows 使用 MS 开发的 Windows NT 内核,无法为应用提供一套标准的 POSIX 接口,导致 nix 与 Windows 上 CC++ 开发的割裂,我觉得这样不太行,一是因为兼容层毕竟是兼容层,无法与原生 syscall 拥有相同的速度与稳定性,二是强迫症(迫真)。

不过相比于 msys2 所带来的便利,这点缺点也不是不能接受,尤其是 pacman 所带来的熟悉感,在 Windows 上做 CC++ 开发也能如此舒服。

在 Msys2 上可以通过 pacman 轻易地安装各种工具链、库等。相比于之前介绍的 vcpkg,或是 canon 等都舒服方便了不是一点半点,而且由于 Msys2 的类 unix 环境,许多原本不能在 Windows 上使用的库也可以使用了,例如 kde framework 等。

Msys2 的劣势

正如前文所述,由于 Msys2 使用了兼容层,所以在其他机器上使用,需要做一些额外改动,比如静态链接标准库,这也让一个简单的 Hello world 的大小达到了12M ,同时也因为兼容层的存在,其性能可能也逊于使用 MSVC 编译的应用。

0

评论 (0)

取消