首页 > 解决方案 > mingw/lib 与 msys/1.0/lib 之间的区别?

问题描述

我正在设置一个 mingw/msys (mingw.org) 环境,在该环境中编译一些使用这种方法生成一些 Windows 程序的旧代码。这些链接到 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 窗口,并且可以使用 make(和一个 Makefile)编译一个项目。

通过这个普通设置,我们得到 C:\MinGW,包括 C:\MinGW\lib,和 C:\MinGW\msys\1.0\ 以及各种子目录,包括 C:\MinGW\msys\1.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

标签: mingwmsys

解决方案


MSYS 是使 Unix shell 命令工作的东西。与 Cygwin 类似,它包含一个兼容性/仿真层。MinGW 是原生 Windows 程序的 F。您应该只为您的 Windows 项目包含并链接 MinGW 文件夹。

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


推荐阅读