Cygwin 与 MinGW – 何时选择






2.33/5 (2投票s)
一个比较
在开发开源应用程序时,我们有时会混淆 Cygwin 和 MinGW。 它们当然不是相同的,但何时选择哪个是一个很大的挑战。
区别
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。