65.9K
CodeProject 正在变化。 阅读更多。
Home

Cygwin 与 MinGW – 何时选择

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.33/5 (2投票s)

2012年10月9日

CPOL

2分钟阅读

viewsIcon

55135

一个比较

在开发开源应用程序时,我们有时会混淆 CygwinMinGW。 它们当然不是相同的,但何时选择哪个是一个很大的挑战。

区别

MinGW (MSYS) 本身不包含编译器或 C 库,因此无法神奇地将 UNIX 程序移植到 Windows,也不提供任何 UNIX 特定的功能,例如区分大小写的的文件名。 寻求此类功能的用户应该考虑 Cygwin。

原则上,Cygwin 应用程序不被认为是“原生 Win32 应用程序”,因为它依赖于 Cygwin® POSIX 仿真 DLL 或 *cygwin1.dll* 来实现 Posix 函数,并且不直接使用 win32 函数。 另一方面,MinGW 提供 Win32 API 提供的函数。 在 MinGW 下移植应用程序时,诸如 fork()mmap()ioctl() 等非 Win32 原生的函数需要重新实现为 Win32 等效项,才能使应用程序正常运行。

偏好

在 MinGW 中,MSYS 是 GNU 工具的集合,例如 bash、make、gawk 和 grep,用于构建应用程序。 它是一个命令行提示符,用户可以在其中运行“./configure”,然后运行“make”来构建程序。 问题是那里没有 /usr 目录。 根目录 (/) 被认为是 usr (/usr) 路径 – 因此您也无法创建一个。 问题出现在程序依赖于第三方库时 – 没有地方可以放置此第三方库,以便默认搜索路径可以找到库文件。 通常在 linux 中 /usr/local/lib 是默认的库搜索路径。 因此,客户端程序无法使用 ”./configure” 进行配置。 您需要对 LIBRARY_PATH 环境变量进行特殊修改,这非常繁琐。

因此,要运行需要大量依赖其他库的程序,我更喜欢 Cygwin 而不是 MinGW。

参考文献

© . All rights reserved.