Zastanawiam się, w jakich sytuacjach używa się Cygwin do kompilowania kodu C i kiedy ktoś wybrałby MinGW. Natknąłem się na What is the difference between Cygwin and MinGW?, opisując różnice między Cygwin i MinGW.Kiedy używać Cygwin lub MinGW do kompilowania kodu C?
O ile zrozumiałem, można by powiedzieć, co następuje:
- Cygwin: Umożliwia kompilację kodu źródłowego C dla systemów operacyjnych zgodnych z POSIX, aby uruchomić w systemie Windows (wymaga cygwin1.dll). Na przykład mogę skompilować aplikację przy użyciu API pthreads dla Windows, chociaż sam system Windows nie implementuje interfejsu API.
- MinGW: Umożliwia kompilację kodu źródłowego zgodnego z systemem Windows. Używając powyższego przykładu, nie mogłem używać API pthreads podczas kompilacji z gcc w MinGW, ale wymagałoby to użycia API wątków oferowanego przez Windows. Zamiast używać kompilatora GCc MinGW, mógłbym również używać innego kompilatora, np. ten, który pochodzi z VC++.
Jednak moje zrozumienie wydaje się błędne, ponieważ udało mi się skompilować program fikcyjny zawierający pthread.h z MinGW. Co rozumiem źle?
Zakładam więc, że ten port win3 pthreads znajduje się w MinGW? – simon
@imon: nie było, ale najwyraźniej jest to pakiet podstawowy MinGW od 2010-02-18 (patrz http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/) – Christoph
@Christoph Cygwin nie wymusza stałego układu pamięci DLL jako takiego, ale musi być w stanie załadować biblioteki DLL w procesie rozwidlania pod tymi samymi adresami, co element nadrzędny. – ak2