MSYS2 Mingw Cygwin对比

系列文章目录

前言

Mingw 仅支持 32-bit 程序,现在一般用 Mingw-w64,既支持 32 也支持 64-bit
Mingw-W64 官网。
一个教程。
MSYS2 是一个 windows 上的 bash shell 调用 MinGW-W64 以及 CygWin。
双击 mingw64.exe 即可打开 mingw 命令行。mingw64.exe 所在的目录就是命令行的根目录。
可以检查 g++ 的版本。
用 g++ 编译程序以后,会出现 a.exe 而不是 a.out。这个执行文件是可以双击执行的,但是运行完会马上退出。可以在程序最后用 getchar()。也可以打开一个 cmd 命令行然后运行 a.exe。当然在 mingw64 的命令行也可以执行。另外执行时 .exe 拓展名可以省略。
不能使用 apt,一切库都要自己手动编译。或者用 MinGW instellation 安装 32-bit 版本。
c 盘的目录为 /c
如果创建 symlink 会直接复制而不是真的 link
MinGW instellation manager 是一个 GUI 界面可以下载安装编译好的 mingw32 程序。例如安装 mingw32-make,安装以后就和 make 的用法一样。
g++ 中定义的宏有 GNUCMINGW32MINGW64
编译动态链接库的方法和 linux 中一样,同样支持用 ldd 查看动态程序的库依赖(dll 和 so 拓展名都会搜索到,但建议用 dll,让其他 windows 程序也可以使用)。

一、MSYS2 是什么?

官网,msys 和 WSL,cygwin 等的对比
MSYS 让 linux 开发者可以开发在 Windows 上运行的软件。WSL 制作的软件不能不安装 WSL 直接在 Windows 上运行。
MSYS2 使用 Pacman 进行包管理,和 Arch linux 一样。
所有可用的包在这里查找。名字一般和 apt 命令中的不一样。
根目录在 C:\msys64\,和 mingw 一样可以用 /c 访问 C 盘。
用 g++ 编译时,宏 MSYS 有定义,而 MINGW32MINGW64 没定义。
pacman -S base-devel

MSYS2 不是“一个可以统领一切的工具”,而是试图专注于它擅长的领域。它提供了一个基于开源软件的本地构建环境,让您在已经熟悉 Linux 的情况下感到宾至如归。在 Windows 上为不同的任务使用多种不同的环境和工具是有充分理由的。

MSYS2 与其他项目
如果您想查看更多比较或觉得它们可以改进,请告诉我们。

MSYS2 与 WSL
MSYS2 允许您构建本机 Windows 程序,而使用 WSL您只能交叉编译它们,这使事情变得更加复杂。如果您只是在寻找 Linux CLI 工具,或者想要构建最终在 Linux 服务器上运行的软件,那么 WSL 是更好的选择。

MSYS2 vs Chocolatey
Chocolatey主要捆绑已经构建的(开源和闭源)软件,并使安装/更新它们变得容易。另一方面,在 MSYS2 中,所有包都是从源代码构建的,您可以轻松地在您的机器上重现这些构建。Chocolatey 包的优点是捆绑安装程序通常具有更好的 Windows 集成,因为它们设置了文件关联、快捷方式等,并且因为它们不是从源代码构建的,所以还有很多用于闭源软件(如 Visual Studio 等)的包。否则很难管理/更新。

MSYS2 与 Cygwin
MSYS2 中的 unixy 工具直接基于Cygwin,因此存在一些重叠。Cygwin 专注于按原样在 Windows 上构建 Unix 软件,而 MSYS2 专注于构建针对 Windows API 构建的本机软件。

MSYS2 与 Arch Linux
MSYS2 和Arch Linux共享包管理器及其附带的所有内容,例如构建定义、打包规则、更新工作方式、包签名方式、包运输方式、滚动发布性质等。通过重用这些功能和概念,我们可以专注于实际的软件包,并从 Arch Linux 开发人员的经验和工作中获益。已经熟悉 Arch Linux 的用户也将更容易上手。

猜你喜欢

转载自blog.csdn.net/aoxuestudy/article/details/130080120