mingw - 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
解决方案
MSYS 是使 Unix shell 命令工作的东西。与 Cygwin 类似,它包含一个兼容性/仿真层。MinGW 是原生 Windows 程序的 F。您应该只为您的 Windows 项目包含并链接 MinGW 文件夹。
如果您不使用 Unix shell (bash),那么您甚至不需要 MSYS,您甚至可以使用独立的 MinGW-w64 构建,例如http://winlibs.com
推荐阅读
- visual-studio - 使用生成的符号在反编译源中的断点处发出“未加载符号”通知
- bash - 使用 gnu-parallel 处理文件内容
- r - 如何制作 UDF,用于对数据框中的所有变量进行描述性分析
- javascript - 如何通过制作命令从浏览器控制台获取脚本
- c# - C#:库的 Properties.Settings.Default.ConnectionString 返回临时值
- php - 致命错误:未捕获的错误:找不到类“EthereumRPC\EthereumRPC”
- java - Google 表格 API 异常
- php - 是否可以使用 PHP 在 die() 上重定向?
- python - subprocess.call 正在扩展文件路径
- python - 将字典的内容导出到 amxn 矩阵