mingw/lib 与 msys/1.0/lib 之间的区别?

Difference between mingw/lib vs msys/1.0/lib?

我正在设置一个 mingw/msys (mingw.org) 环境来编译一些使用这种方法生成一些 Windows 程序的旧代码。这些 link 到 libgdi32.a 和 libz.a 等库

我注意到组合的mingw/msys环境包含两个lib文件夹,每个文件夹包含这些文件的一个版本,它们是不同的。 msys目录下的文件一般比较大,比较旧,好像。

所以我的问题是:这两个lib文件夹有什么意义,为什么是同一个文件的两个版本?

详细介绍我拥有的 mingw 设置的更多背景信息,我认为它非常普通:

我从这里下载了 MinGW (mingw-get-setup.exe):http://www.mingw.org/wiki/Getting_Started 并遵循了我认为是非常标准的安装。

在该安装过程中,我选择(在 MinGW 安装管理器中)包括 msys 和我预计需要的几个库。 (所以我没有为 msys 执行单独的安装。)我可以 运行 msys.bat 打开一个 msys window,并且可以使用 make(和一个 Makefile)编译一个项目。

使用这个原始设置,我们得到 C:\MinGW,包括 C:\MinGW\lib,和 C:\MinGW\msys.0\ 以及各种子目录,包括 C:\MinGW\msys.0\lib.

并且在 msys 控制台中,这些库文件夹位于 /lib 和 /mingw/lib(即:msys 设置了一个挂载点,以便 mingw 出现在 msys 的根目录中。)

出现在两个库中的示例库:

File              mingw               msys
libz.a            4/21/2018 126k     5/13/2012 343k
libgdi32.a        7/8/2020  221k     1/14/2010 252k
libwinspool.a     7/8/2020   86k     1/14/2010  98k
libws2_32.a       7/8/2020  109k     1/14/2010  82k

MSYS 是使 Unix shell 命令工作的东西。与 Cygwin 类似,它包含一个 compatibility/emulation 层。 MinGW 对于本机 Windows 程序是 F。 您应该只为您的 Windows 项目包含和 link with MinGW 文件夹。

如果你不使用 Unix shell (bash) 那么你甚至不需要 MSYS,你甚至可以使用像 http://winlibs.com 这样的独立 MinGW-w64 构建