我想让我的c++项目跨平台,我正在考虑使用Cygwin/MinGW。 但是它们之间有什么区别呢?
另一个问题是,我是否能够在没有Cygwin/MinGW的系统上运行二进制文件?
我想让我的c++项目跨平台,我正在考虑使用Cygwin/MinGW。 但是它们之间有什么区别呢?
另一个问题是,我是否能够在没有Cygwin/MinGW的系统上运行二进制文件?
当前回答
Cygwin使用兼容层,而MinGW是本地的。这是主要的区别之一。
其他回答
请注意,两者之间的效用行为确实不同。
例如,Cygwin tar可以fork -,因为DLL中支持fork(),而mingw版本则不支持。当试图从源代码编译mysql时,这是一个问题。
Cygwin使用一个DLL, Cygwin . DLL,(或者可能是一组DLL)在Windows上提供类似posix的运行时。
MinGW编译为本地Win32应用程序。
如果您使用Cygwin构建某个东西,那么您安装它的任何系统也将需要Cygwin DLL。MinGW应用程序不需要任何特殊的运行时。
其他答案已经击中了目标。我只是想增加一个快速捕捉的例子。
Cygwin试图在Windows上创建一个完整的UNIX/POSIX环境。为此,它使用了各种dll。虽然这些dll由GPLv3+覆盖,但它们的许可包含一个异常,该异常不强制派生作品由GPLv3+覆盖。MinGW是一个C/ c++编译器套件,它允许你创建Windows可执行文件而不依赖于这些dll -你只需要正常的MSVC运行时,这是任何正常的微软Windows安装的一部分。
您还可以获得一个类似UNIX/POSIX的小型环境,使用MinGW编译,称为MSYS。它不具备Cygwin的所有功能,但对于想要使用MinGW的程序员来说是理想的。
Cygwin使用兼容层,而MinGW是本地的。这是主要的区别之一。