何时使用Cygwin或MinGW编译C代码?

时间:2012-03-07 10:12:51

标签: c windows cygwin mingw

我想知道在什么情况下使用Cygwin来编译C代码以及何时会选择MinGW。我过来What is the difference between Cygwin and MinGW?描述了Cygwin和MinGW之间的区别。

据我所知,可以说以下内容:

  • Cygwin:允许编译符合POSIX标准的操作系统的C源代码在Windows上运行(需要cygwin1.dll)。例如,我可以使用适用于Windows的pthreads API编译应用程序,尽管Windows本身并未实现该API。
  • MinGW:允许编译符合Windows的C源代码。因此,使用上面的示例,我在MinGW中使用gcc进行编译时无法使用pthreads API,但是需要使用Windows提供的线程API。我也可以使用不同的编译器,而不是使用MinGW gcc编译器。 VC ++附带的那个。

然而,我的理解似乎是错误的,因为我能够使用MinGW编译包含pthread.h的虚拟程序。我错误地理解了什么?

1 个答案:

答案 0 :(得分:4)

您的理解基本上是正确的。但是,有一个win32 pthreads端口,它是本机线程API的瘦包装。

更合适的示例是fork(),无法在win32上轻松模拟。为此,Cygwin强制执行一个固定的DLL内存布局,如果无法将库加载到应该去的地方(cue rebaseall),事情就会爆炸。