Jaka jest różnica między Cygwinem a MinGW?

Chcę, aby mój projekt C++ był wieloplatformowy i rozważam użycie Cygwin/MinGW. Ale jaka jest różnica między nimi ?

Kolejne pytanie, czy będę w stanie uruchomić binarny system bez Cygwin/MinGW ?

Author: MD XF, 2009-04-21

15 answers

W uproszczeniu wygląda to tak:

  • Skompiluj coś w Cygwin i kompilujesz to dla Cygwin .

  • Skompiluj coś w MinGW i kompilujesz to Dla Windows .

O Cygwin

Celem Cygwina jest ułatwienie portowania aplikacji *nix do systemu Windows, poprzez emulowanie wielu drobnych szczegółów, które zapewniają uniksowe systemy operacyjne i są udokumentowane przez standardy POSIX . Jeśli Twoja aplikacja zakłada, że może korzystać z uniksowych funkcji, takich jak pipes, dostęp do plików i katalogów w stylu uniksowym, i tak dalej, możesz skompilować ją w Cygwin, a sam Cygwin będzie działał jako warstwa kompatybilności wokół twojej aplikacji, tak że wiele z tych uniksowych paradygmatów może być nadal używanych z niewielką lub żadną modyfikacją Twojej aplikacji.

Jeśli chcesz skompilować coś dla Cygwina i rozpropagować otrzymaną aplikację, musisz również rozpowszechniać środowisko uruchomieniowe Cygwin (dostarczone przez cygwin1.dll) wraz z nim, i ma to wpływ na rodzaje licencji na oprogramowanie, których możesz używać.

O MinGW

MinGW jest portem Windows dla narzędzi kompilatora GNU, takich jak GCC, Make, Bash i tak dalej. Nie próbuje emulować lub zapewnić kompleksową kompatybilność z Uniksem, ale zamiast tego dostarcza Minimalne środowisko niezbędne do korzystania z GCC (kompilator GNU) i niewielką liczbę Inne narzędzia w systemie Windows . Nie posiada uniksowej warstwy emulacji, takiej jak Cygwin, ale w rezultacie Twoja aplikacja musi być specjalnie zaprogramowana, aby mogła działać w systemie Windows, co może oznaczać znaczącą zmianę, Jeśli została stworzona, aby polegać na uruchomieniu w standardowym środowisku uniksowym i używa specyficznych funkcji uniksowych, takich jak te wymienione wcześniej. Domyślnie kod skompilowany w GCC MinGW będzie kompilowany do natywnego systemu docelowego Windows X86, w tym .exe i .plików dll, choć można również kompilacji krzyżowej z odpowiednimi ustawieniami. MinGW jest otwartoźródłową alternatywą dla kompilatoraMicrosoft Visual C++ i powiązanych z nim narzędzi linkowania/tworzenia.

Istnieją znacznie wyrafinowane wieloplatformowe frameworki, które ułatwiają przenoszenie aplikacji na różne systemy operacyjne - na przykład Qt framework jest popularnym frameworkiem dla aplikacji wieloplatformowych. Jeśli używasz takiej ramy od samego początku, możesz nie tylko zmniejszyć bóle głowy jeśli chodzi o port na inną platformę, ale można użyć tych samych widżetów graficznych - okna, menu i kontrolki - na wszystkich platformach, jeśli piszesz aplikację GUI.

 511
Author: thomasrutter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-03 14:24:52

Cygwin jest próbą stworzenia kompletnego środowiska UNIX / POSIX w systemie Windows. Aby to zrobić, używa różnych bibliotek DLL. Chociaż biblioteki DLL są objęte GPLv3+, ich licencja zawiera wyjątek, który nie wymusza, aby praca pochodna była objęta GPLv3+. MinGW jest kompilatorem C/C++, który pozwala na tworzenie plików wykonywalnych Windows bez zależności od takich bibliotek DLL - potrzebujesz tylko normalnych środowisk uruchomieniowych MSVC, które są częścią każdej normalnej instalacji Microsoft Windows.

Ty może również uzyskać małe środowisko uniksowe / POSIX, skompilowane z MinGW o nazwie MSYS . Nie posiada on prawie wszystkich funkcji Cygwina, ale jest idealny dla programistów chcących używać MinGW.

 299
Author: Cole Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-05 05:06:56

Aby dodać do innych odpowiedzi, Cygwin jest wyposażony w biblioteki MinGW i nagłówki i można je kompilować bez linkowania do cygwin1.dll przy użyciu flagi-MNO-cygwin z gcc. Zdecydowanie wolę to od używania zwykłego MinGW i MSYS.

 136
Author: TrayMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 02:32:57

Wikipedia robi porównanie tutaj .

Ze strony Cygwina :

  • Cygwin to środowisko podobne do Linuksa dla Windows. Składa się z dwóch części: DLL (cygwin1.dll), który działa jako warstwa emulacji Linuksa API zapewniająca znaczną funkcjonalność Linuksa API.
  • zbiór narzędzi, które zapewniają wygląd Linuksa.

Ze strony Mingw :

MinGW ("minimalistyczny GNU Dla Windows") jest zbiór swobodnie dostępnych i swobodnie dystrybuowanych plików nagłówkowych i bibliotek importowych dla systemu Windows w połączeniu z zestawami narzędzi GNU, które pozwalają na tworzenie natywnych programów Windows, które nie opierają się na żadnych bibliotekach C runtime innych firm]}

 60
Author: dirkgently,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-13 22:22:04

Cygwin używa biblioteki DLL, cygwin.dll, (a może zestaw bibliotek DLL), aby zapewnić środowisko uruchomieniowe podobne do POSIX w systemie Windows.

MinGW kompiluje się do natywnej aplikacji Win32.

Jeśli zbudujesz coś za pomocą Cygwina, każdy system, na którym go zainstalujesz, będzie również potrzebował biblioteki DLL Cygwin. Aplikacja MinGW nie wymaga żadnego specjalnego środowiska uruchomieniowego.

 43
Author: Michael Burr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-21 09:20:21

Przeczytaj te odpowiedzi na pytania, aby zrozumieć różnicę między Cygwinem a MinGW.


Pytanie #1: chcę stworzyć aplikację, w której napiszę kod źródłowy raz, skompiluję go raz i uruchomię na dowolnych platformach (np. Windows, Linux i Mac OS X...).

Odpowiedź # 1: Wpisz swój kod źródłowy w JAVA. Skompilować kod źródłowy raz i uruchom go gdziekolwiek.


Pytanie # 2: chcę stworzyć aplikację, którą raz napiszę kod źródłowy, ale nie ma problem, że kompiluję kod źródłowy dla dowolnych platform osobno (np. Windows, Linux i Mac OS X ...).

Odpowiedź # 2: Napisz swój kod źródłowy w C lub C++. Użyj standardowych plików nagłówkowych tylko. Używać odpowiedniego kompilatora dla każdego platformy (np. Visual Studio dla Windows, GCC dla Linuksa i XCode dla Mac). Należy pamiętać, że nie należy używać żadnych zaawansowane funkcje programowania do skompiluj swój kod źródłowy we wszystkich platformy pomyślnie. W przypadku stosowania Brak klasy C lub C++ standard lub funkcji, Twój kod źródłowy nie kompilować na innych platformach.


Pytanie # 3: w odpowiedzi na pytanie #2, trudno jest używać innego kompilatora dla każdej platformy, czy jest jakiś kompilator wieloplatformowy?

Odpowiedź # 3: Tak, użyj kompilatora GCC. Informatyka jest kompilatorem wieloplatformowym. Na skompiluj kod źródłowy w systemie Windows Użyj MinGW, który dostarcza kompilator GCC Dla Windows i kompiluje swoje źródło kod do natywnego programu Windows. Nie użycie dowolne zaawansowane funkcje programowania (jak Windows API), aby skompilować swoje kod źródłowy na wszystkich platformach z powodzeniem. Jeśli używasz Windows API funkcji, Twój kod źródłowy nie kompilować na innych platformach.


Pytanie # 4: standardowe pliki nagłówkowe C lub C++ nie zapewniają żadnych zaawansowanych funkcji programowania, takich jak wielowątkowość. Co mogę zrobić?

Odpowiedź # 4: powinieneś używać POSIX (Portable Operating System Interface [for UNIX]) standard. Zapewnia wiele zaawansowane funkcje programowania i narzędzia. Wiele systemów operacyjnych w pełni lub częściowo kompatybilny z POSIX (jak Mac OS X, Solaris, BSD / OS oraz ...). Niektóre systemy operacyjne, choć nie oficjalnie certyfikowany jako zgodny z POSIX, zgodny w dużej części (jak Linux, FreeBSD, OpenSolaris i .....). Cygwin zapewnia rozwój w dużej mierze zgodny z POSIX i środowiska run-time Dla Microsoft Okna.


Tak więc:

Aby wykorzystać zalety GCC cross platform kompilator w Windows, użyj MinGW.

Aby korzystać z zalet zaawansowanych funkcji i narzędzi programowania standardu POSIX w systemie Windows, użyj Cygwin.

 38
Author: Amir Saniyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-01 00:06:02

Wikipedia Mówi:

MinGW rozwidlona z wersji 1.3.3 Cygwin. Chociaż oba Cygwin i MinGW mogą być używane do portowania UNIX oprogramowania do Windows, One mają różne podejścia: Cygwin ma na celu dostarczenie kompletnego POSIX layer który zapewnia emulacje kilku wywołań systemowych i bibliotek które istnieją na Linux, UNIX, i warianty BSD. The POSIX layer działa na szczycie Windows, poświęcając wydajność, gdzie niezbędne dla kompatybilności. W związku z tym takie podejście wymaga Windows programy napisane Cygwin do pracy na copyleft biblioteka kompatybilności, która musi być rozpowszechniana wraz z programem, wraz z programem source code. MinGW ma na celu zapewnienie rodzimego funkcjonalność i wydajność poprzez direct Windows API calls. W przeciwieństwie do Cygwin, MinGW nie wymaga warstwy kompatybilności DLL i dlatego programy nie muszą być dystrybuowane z source code.

Ponieważ MinGW jest zależna od Windows API calls, nie może podać pełną POSIX API; nie jest w stanie skompilować niektóre UNIX applications, które można skompilować za pomocą Cygwin. W szczególności to dotyczy aplikacji wymagających funkcjonalności POSIX, takich jak fork(), mmap() lub ioctl() i tych, którzy oczekują, że będą prowadzone w POSIX environment. Aplikacje napisane przy użyciu cross-platform library, która sama została przeniesiona do MinGW, takie jak SDL, wxWidgets, Qt, lub GTK+, Zwykle kompiluje się tak łatwo w MinGW jak w Cygwin.

Połączenie MinGW i MSYS zapewnia małą, samodzielną środowisko które można załadować na nośniki wymienne bez opuszczania wpisy w rejestrze lub pliki na komputerze. Cygwin Przenośny zapewnia podobną funkcję. Zapewniając większą funkcjonalność, Cygwin instalacja i konserwacja staje się bardziej skomplikowana.

Możliwe jest również cross-compile Windows applications Z MinGW-GCC under POSIX systems. Oznacza to, że deweloperzy nie potrzebujesz instalacji Windows z MSYS, aby skompilować oprogramowanie, które będzie uruchom na Windows Bez Cygwin.

 24
Author: PersianGulf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 13:12:25

Z punktu widzenia portowania programu C, dobrym sposobem na zrozumienie tego jest wzięcie przykładu:

#include <sys/stat.h>
#include <stdlib.h>

int main(void)
{
   struct stat stbuf;
   stat("c:foo.txt", &stbuf);
   system("command");
   printf("Hello, World\n");
   return 0;
}

Jeśli zmienimy stat na _stat, możemy skompilować ten program z Microsoft Visual C. możemy również skompilować ten program z MinGW i z Cygwin.

W programie Microsoft Visual C, program będzie połączony z biblioteką MSVC redistributable run-time: mxvcrtnn.dll, Gdzie nn jest pewnym sufiksem wersji. Aby wysłać ten program, będziemy musieli dołączyć tę bibliotekę DLL. Że DLL zapewnia _stat, system i printf.

W MinGW program będzie połączony z msvcrt.dll, która jest wewnętrzną, nieudokumentowaną, niesprawdzoną biblioteką, która jest częścią systemu Windows i nie ma ograniczeń w użyciu aplikacji. Ta Biblioteka jest zasadniczo rozwidleniem biblioteki redystrybucyjnej z MS Visual C do użytku przez sam System Windows.

Pod obydwoma z nich, program będzie miał podobne zachowania:

  • funkcja stat zwróci bardzo ograniczone informacje-brak przydatnych uprawnień lub na przykład numer i-węzła.
  • ścieżka {[10] } jest rozwiązywana zgodnie z bieżącym katalogiem roboczym skojarzonym z napędem c:.
  • system używa cmd.exe /c do uruchomienia zewnętrznego polecenia.

Możemy również skompilować program pod Cygwin. Podobnie jak redystrybucyjny czas działania używany przez MS Visual C, Program Cygwin będzie połączony z bibliotekami Cygwin: cygwin1.dll (Cygwin proper) i cyggcc_s-1.dll (GCC run-time support). Ponieważ Cygwin jest teraz pod LGPL, my może spakować z naszym programem, nawet jeśli nie jest to wolne oprogramowanie zgodne z GPL, i wysłać program.

Pod Cygwinem funkcje biblioteki będą zachowywać się inaczej:

  • funkcja stat ma bogatą funkcjonalność, zwracając znaczące wartości w większości pól.
  • ścieżka c:file.txt w ogóle nie jest rozumiana jako zawierająca odniesienie do litery napędu, ponieważ c: nie jest poprzedzona ukośnikiem. Okrężnica jest uważana za część nazwy i w jakiś sposób została w nią zniekształcona. Jest w Cygwinie nie ma koncepcji ścieżki względnej względem woluminu lub napędu, nie ma koncepcji "aktualnie zalogowanego dysku" i nie ma bieżącego katalogu roboczego dla danego napędu.
  • funkcja system próbuje użyć interpretera /bin/sh -c. Cygwin rozwiąże ścieżkę / zgodnie z lokalizacją Twojego programu wykonywalnego i oczekuje, że sh.exe program będzie współpołożony z Twoim programem wykonywalnym.

Zarówno Cygwin jak i MinGW pozwalają na korzystanie z funkcji Win32. Jeśli chcesz zadzwonić MessageBox lub CreateProcess, możesz to zrobić. Ty można również łatwo zbudować program, który nie wymaga okna konsoli, używając gcc -mwindows, pod MinGW i Cygwin.

Cygwin nie jest ściśle POSIX. Oprócz zapewnienia dostępu do Windows API, zapewnia również własne implementacje niektórych funkcji Microsoft C (rzeczy znalezione w msvcrt.dll lub re-distributable msvcrtnn.dll run-times). Przykładem tego jest rodzina spawn* funkcji typu spawnvp. To dobry pomysł, aby użyć zamiast fork i exec na Cygwinie, ponieważ lepiej mapują do modelu tworzenia procesów systemu Windows, który nie ma pojęcia fork.

Tak więc:

  • Programy Cygwin są nie mniej "natywne" niż programy MS Visual C ze względu na wymagania towarzyszące bibliotekom. Oczekuje się, że implementacje języka programowania w systemie Windows zapewnią własny czas działania, nawet implementacje języka C. W systemie Windows nie ma "libc" do użytku publicznego.

  • Fakt, że MinGW nie wymaga zewnętrznego DLL jest w rzeczywistości wadą; jest to zależne od nieudokumentowanego, wewnętrznego widelca Visual C run-time. MinGW robi to, ponieważ wyjątek biblioteki systemowej GPL dotyczy msvcrt.dll, co oznacza, że programy na licencji GPL mogą być kompilowane i redystrybuowane za pomocą MinGW.

  • Ze względu na znacznie szersze i głębsze wsparcie dla POSIX w porównaniu do msvcrt.dll, Cygwin jest zdecydowanie lepszym środowiskiem do portowania programów POSIX. Ponieważ jest teraz pod LGPL, pozwala na aplikacje ze wszystkimi rodzaje licencji, open lub closed source, do redystrybucji. Cygwin zawiera nawet emulację VT100 i termios, które współpracują z konsolą Microsoft! Aplikacja POSIX, która ustawia tryb raw za pomocą tcsetattr i używa kodów VT100 do sterowania kursorem, będzie działać bezpośrednio w oknie cmd.exe. Jeśli chodzi o użytkownika końcowego, jest to natywna aplikacja konsoli, która wywołuje Win32, aby kontrolować konsolę.

Jednakże:

  • jako natywne narzędzie programistyczne Windows, Cygwin ma pewne dziwactwa, takie jak obsługa ścieżek obcych Windows, zależność od niektórych ciężko zakodowanych ścieżek, takich jak /bin/sh i inne problemy. Te răłĺźnice renderujä ... programy Cygwin "nie-natywne". Jeśli program przyjmuje ścieżkę jako argument lub wejście z okna dialogowego, użytkownicy systemu Windows oczekują, że ścieżka będzie działać tak samo, jak w innych programach Windows. Jeśli to nie działa w ten sposób, to jest problem.

Plug: krótko po ogłoszeniu LGPL zacząłem Cygnal (Cygwin Native Application Library) projekt dostarczający widelec biblioteki DLL Cygwin, który ma na celu rozwiązanie tych problemów. Programy mogą być rozwijane pod Cygwinem, a następnie wdrażane z wersją cygwin1.dll Cygnal bez rekompilacji. W miarę ulepszania tej biblioteki stopniowo eliminuje ona potrzebę MinGW.

Gdy Cygnal rozwiąże problem z obsługą ścieżek, będzie możliwe stworzenie pojedynczego pliku wykonywalnego, który będzie działał ze ścieżkami Windows, gdy zostanie dostarczony jako Windows aplikacja z Cygnal i bezproblemowo współpracuje ze ścieżkami Cygwin po zainstalowaniu w {[40] } Pod Cygwin. W Cygwinie plik wykonywalny będzie działał w sposób przejrzysty ze ścieżką podobną do /cygdrive/c/Users/bob. W implementacji natywnej, gdzie łączy się z wersją cygwin1.dll Cygnal, ścieżka ta nie będzie miała sensu, podczas gdy będzie rozumiana c:foo.txt.

 18
Author: Kaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 18:48:08

Nie przeocz AT & T ' S U/Win program, który ma pomóc w kompilowaniu aplikacji uniksowych pod windows (ostatnia wersja - 2012-08-06; korzysta z Publicznej Licencji Eclipse, Wersja 1.0).

Podobnie jak Cygwin muszą działać przeciwko bibliotece; w ich przypadku POSIX.DLL. Chłopaki z AT & T są wspaniałymi inżynierami (ta sama grupa, która przyniosła ci ksh i dot) i ich rzeczy są warte sprawdzenia.

 14
Author: Norman Ramsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-30 03:42:49

Cygwin emuluje całe środowisko POSIX, podczas gdy MinGW jest minimalnym zestawem narzędzi tylko do kompilacji (kompiluje natywną aplikację Win.) Więc jeśli chcesz, aby twój projekt był wieloplatformowy, wybór między nimi jest oczywisty, MinGW.

Chociaż można rozważyć użycie VS na Windows, GCC na Linux / Unices. Większość projektów open source tak robi (np. Firefox czy Python).

 10
Author: vartec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-21 09:25:15

Aby użyć Cygwina w komercyjnej / zastrzeżonej / Nie-open-source aplikacji, musisz wydzielić dziesiątki tysięcy dolarów na wykup licencji od Red Hata; to unieważnia standardowe warunki licencji przy znacznych kosztach. Google "koszt licencji cygwin" i zobaczyć kilka pierwszych wyników.

W przypadku mingw takie koszty nie są ponoszone, a licencje (PD, BSD, MIT) są niezwykle permisywne. Co najwyżej możesz dostarczyć szczegóły licencji wraz z aplikacja, taka jak Licencja winpthreads wymagana przy użyciu mingw64-tdm.

Edycja dzięki Izzy Helianthus: licencja komercyjna nie jest już dostępna lub konieczna, ponieważ biblioteka API znajdująca się w podkatalogu Winsup Cygwin jest obecnie rozpowszechniana na licencji LGPL, w przeciwieństwie do pełnej GPL.

 9
Author: Arcane Engineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-26 12:59:13

Zauważ, że zachowanie użyteczności może naprawdę różnić się między nimi.

Na przykład, Cygwin Tar może fork - ponieważ fork() jest wspierane w DLL - gdzie wersja mingw nie może. Jest to problem przy próbie skompilowania mysql ze źródła.

 8
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-21 09:23:24

Cygwin został zaprojektowany w celu zapewnienia mniej lub bardziej kompletnego środowiska POSIX dla Windows, w tym obszernego zestawu narzędzi zaprojektowanych w celu zapewnienia pełnowartościowej Platformy podobnej do Linuksa. Dla porównania, MinGW i MSYS zapewniają lekką, minimalistyczną warstwę podobną do POSIX, z dostępnymi tylko bardziej niezbędnymi narzędziami, takimi jak gcc i bash. Ze względu na bardziej minimalistyczne podejście MinGW, nie zapewnia stopnia zasięgu API POSIX oferowanego przez Cygwin, a zatem nie może budować niektórych programów, które w przeciwnym razie może być skompilowany na Cygwinie.

Jeśli chodzi o kod generowany przez te dwie biblioteki, Łańcuch narzędzi Cygwin opiera się na dynamicznym łączeniu się z dużą biblioteką uruchomieniową, cygwin1.dll, podczas gdy łańcuch narzędzi MinGW kompiluje kod do binariów, które łączą się dynamicznie z natywną biblioteką C Systemu Windows msvcrt.dll, jak również statycznie z częściami glibc. Pliki wykonywalne Cygwin są więc bardziej kompaktowe, ale wymagają oddzielnej redystrybucyjnej biblioteki DLL, podczas gdy binaria MinGW mogą być wysyłane samodzielnie, ale wydają się być większe.

Fakt, że programy oparte na Cygwinie wymagają oddzielnej biblioteki DLL do uruchomienia, prowadzi również do ograniczeń licencyjnych. Biblioteka Cygwin runtime jest licencjonowana na licencji GPLv3 z wyjątkiem linkowania dla aplikacji z licencjami zgodnymi z OSI, więc deweloperzy chcący zbudować aplikację o zamkniętym źródle wokół Cygwin muszą nabyć licencję komercyjną od Red Hat. Z drugiej strony, Kod MinGW może być używany zarówno w aplikacjach open-source, jak i zamkniętych, ponieważ nagłówki i biblioteki są licencja wstępna.

 6
Author: bwDraco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-26 00:10:57

Cygwin jest Uniksopodobnym środowiskiem i interfejsem wiersza poleceń dla Microsoft Windows.

Mingw jest natywnym portem oprogramowania GNU Compiler Collection (GCC) dla Microsoft Windows, wraz z zestawem swobodnie dystrybuowanych bibliotek importowych i plików nagłówkowych Dla Windows API. MinGW umożliwia programistom tworzenie natywnych aplikacji Microsoft Windows.

Można uruchamiać binaria wygenerowane za pomocą mingw bez środowiska cygwin, pod warunkiem, że wszystkie niezbędne biblioteki (DLL) są obecne.

 3
Author: gimel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-21 09:21:41

Cygwin używa warstwy zgodności, podczas gdy {[1] } jest natywna. To jedna z głównych różnic.

 2
Author: user3362761,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-20 01:12:52