Cygwin और MinGW में क्या अंतर है?


657

मैं अपना C ++ प्रोजेक्ट क्रॉस प्लेटफॉर्म बनाना चाहता हूं, और मैं Cygwin / MinGW का उपयोग करने पर विचार कर रहा हूं। लेकिन उनमें क्या अंतर है?

एक और सवाल यह है कि क्या मैं सिग्विन / मिनगव के बिना सिस्टम पर बाइनरी चला पाऊंगा?

जवाबों:


629

सरलीकरण के रूप में, यह इस तरह है:

  • Cygwin में कुछ संकलित करें और आप इसे Cygwin के लिए संकलित कर रहे हैं ।

  • MinGW में कुछ संकलित करें और आप इसे विंडोज के लिए संकलित कर रहे हैं ।

साइगविन के बारे में

सिग्विन का उद्देश्य यूनिक्स-आधारित अनुप्रयोगों को विंडोज के लिए अधिक आसान बनाना है, यूनिक्स-आधारित ऑपरेटिंग सिस्टम प्रदान करने वाले कई छोटे विवरणों का अनुकरण करके और पोसिक्स मानकों द्वारा प्रलेखित हैं । आपका एप्लिकेशन यूनिक्स फीचर का उपयोग कर सकता है जैसे कि पाइप, यूनिक्स-स्टाइल फाइल और डायरेक्ट्री एक्सेस, और इसके आगे, और यह साइगविन के साथ संकलित किया जा सकता है जो आपके आवेदन के चारों ओर एक अनुकूलता परत के रूप में कार्य करेगा , ताकि उन यूनिक्स-विशिष्ट प्रतिमानों में से कई का उपयोग किया जा सके। इस्तेमाल किया जाना जारी है।

जब आप अपने सॉफ़्टवेयर को वितरित करते हैं, तो प्राप्तकर्ता को इसे सिगविन रन-टाइम वातावरण (फ़ाइल द्वारा प्रदान cygwin1.dll) के साथ चलाने की आवश्यकता होगी । आप इसे अपने सॉफ़्टवेयर के साथ वितरित कर सकते हैं, लेकिन आपके सॉफ़्टवेयर को इसके ओपन सोर्स लाइसेंस का पालन करना होगा। यह मामला भी हो सकता है कि यहां तक ​​कि अपने सॉफ़्टवेयर को इसके साथ लिंक करना, लेकिन डीएल को अलग से वितरित करना, फिर भी आपको ओपन सोर्स लाइसेंस का सम्मान करने की आवश्यकता हो सकती है।

MinGW के बारे में

MinGW का उद्देश्य केवल जीएनयू संकलक उपकरण का एक विंडोज पोर्ट होना चाहिए, जैसे कि जीसीसी, मेक, बैश, और इसी तरह। यह यूनिक्स के साथ व्यापक संगतता का अनुकरण या प्रदान करने का प्रयास नहीं करता है, बल्कि यह जीसीसी (जीएनयू कंपाइलर) और विंडोज पर अन्य उपकरणों की एक छोटी संख्या का उपयोग करने के लिए न्यूनतम आवश्यक वातावरण प्रदान करता है । इसमें साइग्विन की तरह एक यूनिक्स एमुलेशन लेयर नहीं है, लेकिन परिणामस्वरूप आपके एप्लिकेशन को विशेष रूप से विंडोज में चलने में सक्षम होने के लिए प्रोग्राम करने की आवश्यकता है, जिसका मतलब है कि अगर यह एक मानक यूनिक्स वातावरण में चलाने पर भरोसा करने के लिए बनाया गया था, तो यह महत्वपूर्ण परिवर्तन हो सकता है और यूनिक्स-विशिष्ट सुविधाओं का उपयोग करता है जैसे कि पहले उल्लेख किया गया है। डिफ़ॉल्ट रूप से, MinGW के GCC में संकलित कोड एक देशी विंडोज X86 लक्ष्य को संकलित करेगा, जिसमें .exe और .dll फाइलें शामिल हैं, हालांकि आप सही सेटिंग्स के साथ क्रॉस-संकलन भी कर सकते हैं, क्योंकि आप मूल रूप से GNU कंपाइलर स्क्रीन सूट का उपयोग कर रहे हैं।

MinGW अनिवार्य रूप से Microsoft Visual C ++ कंपाइलर और उससे जुड़े लिंकिंग / उपकरण बनाने का एक विकल्प है । कुछ मामलों में न्यूनतम दृश्य पुस्तकालयों के साथ और अन्य संशोधनों के साथ कुछ मामलों में Microsoft Visual C ++ के संकलन के लिए इच्छित कुछ संकलन करने के लिए MinGW का उपयोग करना संभव हो सकता है।

MinGW में विंडोज ऑपरेटिंग सिस्टम के साथ बातचीत के लिए कुछ बुनियादी मानक लाइब्रेरी शामिल हैं, लेकिन GNU कंपाइलर संग्रह में शामिल सामान्य मानक पुस्तकालयों के साथ ये आपके द्वारा बनाए गए सॉफ़्टवेयर पर लाइसेंस प्रतिबंध नहीं लगाते हैं।

गैर-तुच्छ सॉफ़्टवेयर अनुप्रयोगों के लिए, जब तक आप एक व्यापक क्रॉस-प्लेटफ़ॉर्म फ्रेमवर्क का उपयोग नहीं करते हैं, तब तक उन्हें क्रॉस-प्लेटफ़ॉर्म बनाना एक बड़ी चुनौती हो सकती है। जिस समय मैंने इसे लिखा था Qt फ्रेमवर्क इस उद्देश्य के लिए सबसे लोकप्रिय में से एक था, जिससे आलेखीय अनुप्रयोगों के निर्माण की अनुमति मिलती है जो विंडोज सहित ऑपरेटिंग सिस्टम पर काम करते हैं, लेकिन अन्य विकल्प भी हैं। यदि आप शुरू से ही इस तरह के ढांचे का उपयोग करते हैं, तो आप न केवल अपने सिरदर्द को कम कर सकते हैं, जब किसी अन्य प्लेटफ़ॉर्म पर पोर्ट करने का समय आता है, लेकिन आप एक ही ग्राफिकल विजेट का उपयोग कर सकते हैं - विंडोज़, मेनू और नियंत्रण - यदि आप लिख रहे हैं तो सभी प्लेटफार्मों पर जीयूआई एप्लिकेशन, और उन्हें उपयोगकर्ता के लिए मूल दिखाई देते हैं।


43
MinGW के साथ आने वाला बैश एक देशी विंडोज प्रोग्राम नहीं है। यह MSYS DLL पर निर्भर करता है, जो Cygwin DLL का एक कांटा है। MinGW / MSYS के साथ आने वाले अन्य यूनिक्स उपयोगिताओं में से कई के लिए समान है। MinGW जीसीसी वास्तव में एक देशी कार्यक्रम है। मेक एक देशी संस्करण और एक MSYS दोनों में उपलब्ध है।
ak2

6
गति के संदर्भ में कोई अंतर?
एकादशी

6
अधिकांश स्थितियों में गति का अंतर आग्नेय होगा । किसी भी अंतर से नीचे आ जाएगा कि साइबरविन संगतता परत द्वारा प्रदान की गई अमूर्तता का अतिरिक्त स्तर चीजों को धीमा कर देता है। I / O जैसी चीजों पर इसका औसत दर्जे का प्रभाव पड़ सकता है। उदाहरण के लिए, बहुत समय पहले, गिट केवल साइबरविन में विंडोज पर चलता था, और इसकी वजह से यह थोड़ा धीमा था। फिर से, यदि आप किसी फ्रेमवर्क का उपयोग करते हुए कोड करते हैं, तो यह भी एक अमूर्त परत है जिसमें कुछ चीजों को धीमा करने की क्षमता है।
थोमसट्रेटर

28
मुझे ध्यान देना चाहिए कि साइबरविन के लिए संकलित कोड अभी भी देशी कोड है - इसे जावा जैसे इंटरप्रेटर के माध्यम से चलाने की आवश्यकता नहीं है। यह सिर्फ इतना है कि जब इसे डिस्क / फ़ाइल जैसी कुछ ओएस सुविधाओं के साथ बातचीत करने की आवश्यकता होती है, तो यह एक और परत के माध्यम से जाती है।
थोमसट्रेटर

4
आमतौर पर आप तुलना नहीं कर पाएंगे, क्योंकि आपको अपना कोड अलग-अलग तरीके से लिखना होगा, जो इस बात पर निर्भर करता है कि वह साइबरविन के लिए है या नहीं। यद्यपि किसी भी छोटे, सरल सॉफ्टवेयर जैसे "हेल्लो वर्ल्ड" के लिए साइबरविन समतुल्य केवल साइबरविन रनटाइम लाइब्रेरी के कारण बड़ा होगा। यदि आप साइबरविन रनटाइम लाइब्रेरी के आकार की गणना नहीं करते हैं, तो साइबरविन संस्करण आमतौर पर छोटा होगा, लेकिन मुझे लगता है कि एक गलत आंकड़ा है क्योंकि लाइब्रेरी को व्यावहारिक रूप से हमेशा सॉफ़्टवेयर के साथ आपूर्ति करने की आवश्यकता होगी। उस ने कहा, यदि आप किसी गैर-तुच्छ पुस्तकालय / ढांचे का उपयोग कर रहे हैं तो यह उस पर अधिक निर्भर करेगा।
थोमसट्रेटर

311

Cygwin विंडोज पर एक पूर्ण UNIX / POSIX वातावरण बनाने का प्रयास है। ऐसा करने के लिए यह विभिन्न DLL का उपयोग करता है। हालांकि इन DLL को GPLv3 + द्वारा कवर किया गया है, लेकिन उनके लाइसेंस में एक अपवाद है जो GPLv3 + द्वारा कवर किए जाने के लिए व्युत्पन्न कार्य को बाध्य नहीं करता है। MinGW एक C / C ++ कंपाइलर सूट है जो आपको ऐसे DLL पर निर्भरता के बिना Windows निष्पादक बनाने की अनुमति देता है - आपको केवल सामान्य MSVC रनटाइम की आवश्यकता है, जो कि किसी भी सामान्य Microsoft Windows स्थापना का हिस्सा हैं।

आप एक छोटा सा UNIX / POSIX पर्यावरण की तरह भी प्राप्त कर सकते हैं, जिसे MSYS नाम के MinGW के साथ संकलित किया गया है । यह Cygwin की सभी विशेषताओं के पास कहीं भी नहीं है, लेकिन प्रोग्रामर जो MinGW का उपयोग करना चाहते हैं, उनके लिए आदर्श है।


59
लेकिन अगर मैं मुफ्त गैर-जीपीएल सॉफ्टवेयर जारी करना चाहता हूं? क्षमा करें, मैं GPL प्रशंसक नहीं हूं, यह सब है।

19
@ क्या आपको उस रनटाइम को पुनर्वितरित करने की आवश्यकता नहीं है जिसका उपयोग MinGW करता है - यह विंडोज का हिस्सा है।

14
@ ak2: यह सच है, लेकिन भ्रामक है। cygwyn gcc + cygwin पर्यावरण उत्पादन से जुड़े बायनेरिज़ (GPL) cygwin dll से जुड़ा हुआ है। mingw + msys बायनेरिज़ का निर्माण करने के लिए चूक सी प्लेटफ़ॉर्म सी लिब से जुड़ा हुआ है।
सीन मैकमिलन

4
@DanMoulding यदि आप एक Microsoft प्रशंसक नहीं हैं, तो आपको पहली बार विंडोज के लिए विकसित करने के लिए उन भावनाओं को अनदेखा करना होगा। ;-)
अराध्य शी

14
@anon "लेकिन अगर मैं मुफ्त गैर-जीपीएल सॉफ्टवेयर जारी करना चाहता हूं?" "ओपन सोर्स लाइसेंसिंग एक्सेप्शन" यहां देखें: cygwin.com/licensing.html
कुक

138

अन्य उत्तरों में जोड़ने के लिए, साइगविन मिनगॉव पुस्तकालयों और हेडर के साथ आता है और आप gg के साथ -mno-cygwin ध्वज का उपयोग करके cygwin1.dll से लिंक किए बिना संकलन कर सकते हैं। मैं बहुत सादा MinGW और MSYS का उपयोग करना पसंद करता हूं।


31
यह साइबरविन 1.7.6 के साथ और अधिक काम नहीं करता है। gcc: -mno-cygwin ध्वज को हटा दिया गया है; एक मिंगव-लक्षित क्रॉस-कंपाइलर का उपयोग करें।
सिगाजिस

2
@ सिगिजूइस: सच है, लेकिन पुराने -मन्नो-साग्विन ध्वज अभी भी GCC 3.x के लिए काम करता है:gcc-3 -mno-cygwin
Amro

1
तो क्या इसका मतलब यह है कि मुझे एक साइबर होस्ट से एक मिंगव लक्ष्य को संकलित करने के लिए मिंगव की आधिकारिक साइट से मिंगव लाइब्रेरियों को डाउनलोड करने की आवश्यकता है? या इन पुस्तकालयों को सिगविन के पैकेज सिस्टम से डाउनलोड किया जा सकता है?
CMCDragonkai

5
@CMCDragonkai आप सिगविन साइट से mingw संगत कंपाइलरों को सेटअप उपयोगिता को चलाकर प्राप्त कर सकते हैं और उन्हें खोज और टिक कर सकते हैं। भले ही जीसीसी अब मिंगव-संगत कोड उत्पन्न नहीं करता है, आप साइगविन के भीतर एक "मिंगव-जीसीसी" (जो कि पूरा नाम नहीं है) को एक ही तरह का निष्पादन योग्य बनाने के लिए चला सकते हैं कि मिंगव कंपाइलर एमएसएस होगा।
कार्डिफ स्पेस मैन

9
कार्डिफ़ के सहायक उत्तर में संशोधन करने के लिए, साइगविन के मिनगव पैकेज और कमांड में कुछ अस्पष्ट नाम हैं। न्यूनतम -64 स्थापित करने के लिए ( बहुत ज्यादा जो आप हमेशा चाहते हैं, इन दिनों ), mingw64-x86_64-gcc-coreसिगविन पैकेज स्थापित करें । MinGW-64 तब अजीब रूप से नामित x86_64-w64-mingw32-gccकमांड के रूप में उपलब्ध होगा । कृपया भगवान (ओं), किसी ने पहले से ही इन खूनी चीजों के नामों को एकजुट किया।
सेसिल करी

60

विकिपीडिया यहाँ तुलना करता है

साइगविन की वेबसाइट से :

  • Cygwin विंडोज के लिए लिनक्स जैसा वातावरण है। इसमें दो भाग होते हैं: एक DLL (cygwin1.dll) जो लिनक्स एपीआई इम्यूलेशन लेयर के रूप में कार्य करता है जो पर्याप्त लिनक्स एपीआई कार्यक्षमता प्रदान करता है।
  • औज़ारों का एक संग्रह जो लिनक्स लुक और फील प्रदान करता है।

मिंगव की वेबसाइट से :

MinGW ("विंडोज के लिए मिनिमलिस्टिक GNU) स्वतंत्र रूप से उपलब्ध और स्वतंत्र रूप से वितरण योग्य विंडोज विशिष्ट हेडर फ़ाइलों और आयात पुस्तकालयों का एक संग्रह है, जो GNU टूलसेट के साथ संयुक्त है, जो किसी को भी किसी भी 3-पार्टी सीटाइम डीएलएल पर भरोसा नहीं करने वाले देशी विंडोज कार्यक्रमों का उत्पादन करने की अनुमति देता है


47

Cygwin Windows पर POSIX जैसा रनटाइम प्रदान करने के लिए DLL, cygwin.dll, (या शायद DLL का एक सेट) का उपयोग करता है।

MinGW एक देशी Win32 अनुप्रयोग के लिए संकलित करता है।

यदि आप Cygwin के साथ कुछ बनाते हैं, तो आप इसे स्थापित करने वाली किसी भी प्रणाली को Cygwin DLL (s) की आवश्यकता होगी। एक MinGW एप्लिकेशन को किसी विशेष रनटाइम की आवश्यकता नहीं है।


42

Cygwin और MinGW के बीच अंतर को समझने के लिए इन सवालों के जवाब पढ़ें।


प्रश्न # 1: मैं एक एप्लिकेशन बनाना चाहता हूं जिसे मैं एक बार स्रोत कोड लिखता हूं, इसे एक बार संकलित करता हूं और इसे किसी भी प्लेटफॉर्म (जैसे विंडोज, लिनक्स और मैक ओएस एक्स…) में चलाता हूं।

उत्तर # 1: जावा में अपना स्रोत कोड लिखें। स्रोत कोड को एक बार संकलित करें और इसे कहीं भी चलाएं।


प्रश्न # 2: मैं एक एप्लिकेशन बनाना चाहता हूं जिसे मैं एक बार सोर्स कोड लिखता हूं लेकिन कोई समस्या नहीं है कि मैं किसी भी प्लेटफॉर्म के लिए स्रोत कोड को अलग से संकलित करता हूं (जैसे विंडोज, लिनक्स और मैक ओएस एक्स…)।

उत्तर # 2: C या C ++ में अपना सोर्स कोड लिखें। मानक हेडर फ़ाइलों का ही उपयोग करें। किसी भी प्लेटफ़ॉर्म के लिए उपयुक्त कंपाइलर का उपयोग करें (उदाहरण के लिए विंडोज के लिए विजुअल स्टूडियो, लिनक्स के लिए जीसीसी और मैक के लिए एक्सकोड)। ध्यान दें कि आपको किसी भी उन्नत प्रोग्रामिंग सुविधाओं का उपयोग सभी प्लेटफार्मों में अपने स्रोत कोड को सफलतापूर्वक संकलित करने के लिए नहीं करना चाहिए। यदि आप कोई भी C या C ++ मानक कक्षाएं या फ़ंक्शंस का उपयोग नहीं करते हैं, तो आपका स्रोत कोड अन्य प्लेटफार्मों में संकलित नहीं होता है।


प्रश्न # 3: प्रश्न # 2 के उत्तर में, प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग संकलक का उपयोग करना मुश्किल है, क्या कोई क्रॉस प्लेटफ़ॉर्म संकलक है?

उत्तर # 3: हाँ, GCC कंपाइलर का उपयोग करें। यह एक क्रॉस प्लेटफॉर्म कंपाइलर है। Windows में अपने स्रोत कोड को संकलित करने के लिए MinGW का उपयोग करें जो Windows के लिए GCC संकलक प्रदान करता है और आपके स्रोत कोड को मूल Windows प्रोग्राम में संकलित करता है। सभी प्लेटफार्मों में अपने स्रोत कोड को सफलतापूर्वक संकलित करने के लिए किसी भी उन्नत प्रोग्रामिंग सुविधाओं (जैसे विंडोज एपीआई) का उपयोग न करें। यदि आप Windows API फ़ंक्शन का उपयोग करते हैं, तो आपका स्रोत कोड अन्य प्लेटफार्मों में संकलित नहीं होता है।


प्रश्न # 4: C या C ++ मानक हेडर फाइलें मल्टी-थ्रेडिंग जैसी कोई उन्नत प्रोग्रामिंग सुविधाएँ प्रदान नहीं करती हैं। मैं क्या कर सकता हूँ?

उत्तर # 4: आपको POSIX (पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस [UNIX के लिए)) मानक का उपयोग करना चाहिए। यह कई उन्नत प्रोग्रामिंग सुविधाएँ और उपकरण प्रदान करता है। कई ऑपरेटिंग सिस्टम पूरी तरह या आंशिक रूप से POSIX संगत (जैसे मैक ओएस एक्स, सोलारिस, बीएसडी / ओएस और ...)। कुछ ऑपरेटिंग सिस्टम जबकि आधिकारिक तौर पर POSIX के रूप में प्रमाणित नहीं हैं, बड़े हिस्से (जैसे लिनक्स, फ्रीबीएसडी, ओपनसोलारिस और ...) में अनुरूप हैं। Cygwin Microsoft Windows के लिए एक बड़े पैमाने पर POSIX- संगत विकास और रन-टाइम वातावरण प्रदान करता है।


इस प्रकार:

विंडोज में जीसीसी क्रॉस प्लेटफॉर्म कंपाइलर का उपयोग करने के लिए, मिनगॉव का उपयोग करें।

Windows में POSIX मानक उन्नत प्रोग्रामिंग सुविधाओं और उपकरणों का लाभ लेने के लिए, Cygwin का उपयोग करें।


4
अपने छोटे से फैक के बारे में: 1) आपका अधिकार, अगर आपको किसी ऐसी चीज़ की ज़रूरत है जो कहीं भी चलती है और उसे संकलित करने की ज़रूरत नहीं है तो जावा जैसा कुछ चुनें (अजगर, पर्ल, रूबी और बाकी स्क्रिप्ट भाषाओं को भी न भूलें) 2) यह C के मामले के लिए कुछ हद तक गलत है, क्योंकि C के सभी कंपाइलर इसका बहुत अच्छा समर्थन करते हैं। 3) आप अभी भी win32 एपीआई का उपयोग कर सकते हैं, लेकिन आपको इसे पोर्टेबिलिटी लेयर में लपेटना होगा, ताकि यह केवल एक डिज़ाइन समस्या हो।
कोयोटे

1
4) यह पूरी तरह से गलत है, क्योंकि मैं ऊपर दिए गए कारणों के कारण, क्योंकि POSIX केवल अन्य एपीआई है, भले ही आप इतने पोसिक्स का बचाव करते हैं, आपको पता होना चाहिए कि यहां तक ​​कि यूनानियों को भी POSIX के एक ही सेट को लागू करने की आवश्यकता नहीं है, तो कैसे क्या आप उससे निपटते हैं? POSIX api का वास्तविक समय दिमाग में आता है। और यह आपको पूरी तरह से फर्जी और गलत बनाता है, क्योंकि आपको खिड़कियों में किसी भी चीज के लिए पॉसिक्स की जरूरत नहीं है, आप सिर्फ Win32 API का उपयोग कर सकते हैं। या आपको कैसे लगता है कि Qt, GTK और WxWidgets ने क्रॉस-प्लेटफ़ॉर्म होने का एक रास्ता खोज लिया है, मुझे लगता है कि इन सभी को विंडोज़ में साइबरविन का उपयोग करना होगा। -1 अपने जवाब के लिए वोट करें।
कोयोटे

4
मैं आपका तर्क नहीं समझता, @ Coyote21। क्या आप कह रहे हैं कि क्रॉस-प्लेटफॉर्म के विकास के लिए POSIX अनुपयुक्त है? क्या आप कह रहे हैं कि कई प्लेटफ़ॉर्म के लिए C / C ++ में कोड लिखने का एकमात्र उपयुक्त तरीका यह है कि आप जिस प्रत्येक प्लेटफ़ॉर्म का समर्थन करना चाहते हैं, उसके लिए अपनी संगतता परत लिखें? मुझे POSIX के साथ शुरू करने के सुझाव के साथ कुछ भी गलत नहीं दिख रहा है। आपको यह देखने की आवश्यकता है कि यह आपको कितनी दूर ले जा सकता है और क्या एक व्यापक संगतता परत समाधान की आवश्यकता होगी। बड़ी संगतता परतें मानदंड नहीं हैं। अन्यथा यह कहना कि POSIX एक पूर्ण विफलता है।
डेविड ग्लैडफेल्टर

मल्टीग्रेडिंग को POSIX लेयर के माध्यम से यहां तक ​​कि MinGW में भी लागू किया जाता है।
अलेक्जेंडर शिशेंको

1
"आपको सभी प्लेटफार्मों में अपने स्रोत कोड को सफलतापूर्वक संकलित करने के लिए किसी भी उन्नत प्रोग्रामिंग सुविधाओं का उपयोग नहीं करना चाहिए।" आपको वास्तव में स्पष्ट करने की आवश्यकता है कि "उन्नत प्रोग्रामिंग सुविधाओं" से आपका क्या मतलब है। बाद की लाइन के आधार पर, मेरा अनुमान है कि आप वास्तव में प्लेटफ़ॉर्म-विशिष्ट सुविधाओं का मतलब हैं । यदि आपका मतलब आधुनिक भाषा की सुविधाओं से है, तो नहीं, क्योंकि सक्षम कंपाइलर "सभी [प्रमुख] प्लेटफार्मों" के लिए मौजूद हैं, और हमें उन विशेषताओं से खुद को वंचित नहीं करना चाहिए, जिनके लिए संकलक या पुस्तकालय अभी भी पीछे हैं। एक सभ्य संकलक, मानक C / ++ और क्रॉस-प्लेटफॉर्म लाइब्रेरी के साथ, हम बहुत उन्नत हो सकते हैं ।
अंडरस्कोर_ड

34

सी प्रोग्राम को पोर्ट करने के दृष्टिकोण से, इसे समझने का एक अच्छा तरीका एक उदाहरण लेना है:

#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;
}

अगर हम इसमें बदलाव statकरते हैं _stat, तो हम इस कार्यक्रम को Microsoft Visual C. के साथ संकलित कर सकते हैं। हम इस कार्यक्रम को MinGW के साथ, और Cygwin के साथ भी संकलित कर सकते हैं।

Microsoft Visual C के तहत, प्रोग्राम को MSVC के पुनर्वितरण योग्य रन-टाइम लाइब्रेरी से जोड़ा जाएगा: mxvcrtnn.dllजहां nnकुछ संस्करण प्रत्यय है। इस प्रोग्राम को शिप करने के लिए हमें उस DLL को शामिल करना होगा। वह DLL प्रदान करता है _stat, systemऔर printf। (हमारे पास रन-टाइम को स्टेटिकली लिंक करने का विकल्प भी है।)

MinGW के तहत, प्रोग्राम से जुड़ा होगा msvcrt.dll, जो कि एक आंतरिक, अविभाजित, बिना लाइसेंस की लाइब्रेरी है जो विंडोज का हिस्सा है, और एप्लिकेशन उपयोग के लिए ऑफ-लिमिट है। वह लाइब्रेरी मूल रूप से विंडोज द्वारा उपयोग के लिए MS Visual C से पुनर्वितरण योग्य रन-टाइम लाइब्रेरी का एक कांटा है।

इन दोनों के तहत, कार्यक्रम में समान व्यवहार होंगे:

  • statसमारोह उदाहरण के लिए बहुत सीमित जानकारी-कोई उपयोगी अनुमतियों या आइनोड संख्या वापस आ जाएगी।
  • पथ c:file.txtको ड्राइव के साथ जुड़े वर्तमान कार्यशील निर्देशिका के अनुसार हल किया गया है c:
  • systemcmd.exe /cबाहरी कमांड चलाने के लिए उपयोग करता है ।

हम Cygwin के तहत भी कार्यक्रम संकलित कर सकते हैं। एमएस विज़ुअल सी द्वारा उपयोग किए जाने वाले पुनर्वितरण योग्य रन-टाइम के समान, सिग्विन कार्यक्रम को सिग्विन की रन-टाइम लाइब्रेरी से जोड़ा जाएगा: cygwin1.dll(साइगविन उचित) और cyggcc_s-1.dll(जीसीसी रन-टाइम समर्थन)। चूंकि Cygwin अब LGPL के अधीन है, हम अपने प्रोग्राम के साथ पैकेज कर सकते हैं, भले ही यह GPL- संगत फ्री सॉफ्टवेयर न हो, और प्रोग्राम को शिप करें।

साइगविन के तहत, पुस्तकालय के कार्य अलग तरह से व्यवहार करेंगे:

  • statसमारोह क्षेत्रों के अधिकांश में सार्थक मूल्यों लौटने, अमीर कार्यक्षमता है।
  • पथ c:file.txtको ड्राइव अक्षर के संदर्भ के रूप में बिल्कुल भी नहीं समझा जाता है, क्योंकि c:स्लैश का पालन नहीं किया जाता है। बृहदान्त्र को नाम का हिस्सा माना जाता है और किसी भी तरह से इसे उखाड़ दिया जाता है। साइग्विन में वॉल्यूम या ड्राइव के विरुद्ध एक सापेक्ष पथ की कोई अवधारणा नहीं है, कोई "वर्तमान में लॉग ड्राइव" अवधारणा नहीं है, और प्रति-ड्राइव वर्तमान कार्यशील निर्देशिका नहीं है।
  • systemसमारोह का उपयोग करने की कोशिश करता /bin/sh -cदुभाषिया। Cygwin /आपके निष्पादन योग्य स्थान के अनुसार पथ को हल करेगा , और एक sh.exeप्रोग्राम को आपके निष्पादन योग्य के साथ सह-स्थित होने की उम्मीद करेगा ।

Cygwin और MinGW दोनों आपको Win32 फ़ंक्शन का उपयोग करने की अनुमति देते हैं। यदि आप कॉल करना चाहते हैं MessageBoxया CreateProcess, आप ऐसा कर सकते हैं। आप आसानी से एक प्रोग्राम भी बना सकते हैं, जिसमें gcc -mwindowsमिनॉग और साइगविन के तहत , कंसोल विंडो का उपयोग करने की आवश्यकता नहीं है।

Cygwin कड़ाई से POSIX नहीं है। विंडोज एपीआई तक पहुंच प्रदान करने के अलावा, यह कुछ माइक्रोसॉफ्ट सी फ़ंक्शन ( msvcrt.dllफिर से वितरण योग्य msvcrtnn.dllरन-टाइम में पाया जाने वाला सामान) या अपने स्वयं के कार्यान्वयन भी प्रदान करता है । इसका एक उदाहरण इस spawn*तरह के कार्यों का परिवार है spawnvp। ये एक अच्छा विचार है कि सिग्विन पर forkऔर इसके बजाय उपयोग करने के लिए एक अच्छा विचार execहै क्योंकि वे विंडोज प्रक्रिया निर्माण मॉडल के लिए बेहतर मैप करते हैं जिसकी कोई अवधारणा नहीं है fork

इस प्रकार:

  • पुस्तकालयों की संगत की आवश्यकता के आधार पर एमएस विजुअल सी कार्यक्रमों की तुलना में सिग्विन कार्यक्रम "देशी" कम नहीं हैं। विंडोज पर प्रोग्रामिंग भाषा कार्यान्वयन को अपने स्वयं के रन-टाइम, यहां तक ​​कि सी भाषा कार्यान्वयन प्रदान करने की उम्मीद है। सार्वजनिक उपयोग के लिए विंडोज पर कोई "libc" नहीं है।

  • तथ्य यह है कि मिनगवे को किसी तीसरे पक्ष के डीएलएल की आवश्यकता नहीं है, वास्तव में नुकसान है; यह दृश्य सी रन-टाइम के एक अनिर्दिष्ट, विंडोज-आंतरिक कांटे पर निर्भर करता है। MinGW ऐसा इसलिए करता है क्योंकि GPL सिस्टम लाइब्रेरी अपवाद पर लागू होता है msvcrt.dll, जिसका अर्थ है कि GPL-ed प्रोग्रामों को संकलित करके MinGW के साथ पुनर्वितरित किया जा सकता है।

  • POSIX की तुलना में इसके व्यापक और गहरे समर्थन के कारण msvcrt.dll, Cygwin, POSIX कार्यक्रमों को पोर्ट करने के लिए बेहतर वातावरण है। चूंकि यह अब LGPL के अधीन है, इसलिए यह सभी प्रकार के लाइसेंस, ओपन या क्लोज्ड सोर्स के साथ एप्लिकेशन को पुनर्वितरित करने की अनुमति देता है। Cygwin में VT100 इम्यूलेशन भी होता है और termiosजो Microsoft कंसोल के साथ काम करता है! एक POSIX एप्लिकेशन जो tcsetattrकर्सर को नियंत्रित करने के लिए VT100 कोड का उपयोग करता है और cmd.exeविंडो में सही काम करेगा । जहां तक ​​एंड-यूज़र का सवाल है, यह कंसोल को नियंत्रित करने के लिए Win32 कॉल करने वाला एक देशी कंसोल ऐप है।

तथापि:

  • एक देशी विंडोज डेवलपमेंट टूल के रूप में, साइगविन के पास कुछ क्वर्क हैं, जैसे कि पथ हैंडलिंग जो कि विंडोज के लिए विदेशी है, कुछ हार्ड-कोडेड रास्तों जैसे /bin/shऔर अन्य मुद्दों पर निर्भरता । ये अंतर हैं जो Cygwin कार्यक्रमों को "गैर-देशी" प्रदान करते हैं। यदि कोई प्रोग्राम एक तर्क के रूप में एक पथ लेता है, या एक संवाद बॉक्स से इनपुट करता है, तो विंडोज उपयोगकर्ता उस पथ को उसी तरह से काम करने की अपेक्षा करते हैं जैसे कि अन्य विंडोज कार्यक्रमों में करता है। अगर यह उस तरह से काम नहीं करता है, तो यह एक समस्या है।

प्लग: LGPL की घोषणा के तुरंत बाद, मैंने Cygwin DLL का एक कांटा प्रदान करने के लिए Cygnal (Cygwin Native Application Library) परियोजना शुरू की जिसका उद्देश्य इन मुद्दों को ठीक करना है। प्रोग्राम्स को सिग्विन के तहत विकसित किया जा सकता है, और फिर cygwin1.dllबिना पुनर्नवीनीकरण के सिग्नल संस्करण के साथ तैनात किया जा सकता है । जैसे-जैसे यह पुस्तकालय सुधरता है, यह धीरे-धीरे मिनगीड की आवश्यकता को समाप्त कर देगा।

जब सिग्नल पथ से निपटने की समस्या का हल करता है, तो एकल निष्पादन योग्य विकसित करना संभव होगा जो कि साइग्नल के साथ विंडोज एप्लिकेशन के रूप में भेजे जाने पर विंडोज पथों के साथ काम करता है, और साइगविन के साथ आपके /usr/binअंडर में स्थापित होने पर साइगविन पथों के साथ काम करता है। साइगविन के तहत, निष्पादन योग्य पारदर्शी रूप से एक पथ के साथ काम करेगा /cygdrive/c/Users/bob। देशी परिनियोजन में, जहां यह सिग्नल संस्करण के विरुद्ध लिंक कर रहा है cygwin1.dll, उस पथ का कोई अर्थ नहीं होगा, जबकि यह समझ में आएगा c:foo.txt


2
बहुत बढ़िया जवाब। यह दर्शाता है कि जब समान कोड को 3 वातावरणों में संकलित, लिंक और निष्पादित किया जाता है तो क्या होता है, यह महत्वपूर्ण है और अंतरों को स्पष्ट करता है।
drlolly

@ काज़ वो विकास कैसा चल रहा है? ध्वनि पुनरावृत्ति लेकिन यह कम से कम एक साल पहले से मरा हुआ लगता है। आप GitHub का उपयोग क्यों नहीं करते हैं ताकि लोग मदद कर सकें और भाग ले सकें?
not2qubit

2
@ not2qubit मुझे लगता है कि मेरे पास अपनी परियोजनाओं पर बेहतर नियंत्रण है जब वे अपने स्वयं के सर्वर पर होस्ट किए जाते हैं जो मैं खुद को नियंत्रित करता हूं। मैं गिट का उपयोग कर रहा हूं; भंडार को खींचा जा सकता है। मैं ई-मेल द्वारा पुल अनुरोधों को स्वीकार कर सकता हूं (जैसा कि लिनुस टोरवाल्ड्स ने उन्हें डिज़ाइन किया है)। मैं किसी के लिए प्रतिबद्ध विशेषाधिकार के साथ एक खाता भी दे सकता हूं जो अनुचर-स्तरीय योगदानकर्ता बन जाता है। साइग्नल ठीक काम करता है; मैं नियमित रूप से TXR भाषा के नए रिलीज के विंडोज संस्करणों में इसे बांध रहा हूं। मैं Cygnal को 2019 की शुरुआत में कुछ समय के लिए Cygwin बेसलाइन पर वापस कर दूंगा।
कज़

@ not2qubit ध्यान दें कि सिग्नल एजेंडा के सभी 17 मुद्दे इस प्रकार हैं। किसी ने भी कोई नई आवश्यकताओं का सुझाव नहीं दिया है, या उन तरीकों के बारे में शिकायत की है जो उन 17 को संभाले हुए हैं। इसलिए नए Cygwin को पुन: शुरू करने के अलावा और कोई विकास आवश्यक नहीं है, जो बेहद जरूरी नहीं है।
कज़

27

विकिपीडिया कहते हैं :

MinGWसंस्करण 1.3.3 से कांटा गया Cygwin। दोनों हालांकि Cygwin और MinGWबंदरगाह के लिए इस्तेमाल किया जा सकता UNIXकरने के लिए सॉफ्टवेयर Windows, वे अलग अलग दृष्टिकोण है: Cygwinएक पूर्ण प्रदान करना है POSIX layer कि कई सिस्टम कॉल और पुस्तकालयों कि पर मौजूद emulations प्रदान करता है Linux, UNIXऔर BSDवेरिएंट। POSIX layer के शीर्ष पर चलता है Windows, जहां आवश्यक संगतता के लिए प्रदर्शन का त्याग। तदनुसार, इस दृष्टिकोण को Windowsप्रोग्राम के साथ Cygwinवितरित किया जाना चाहिए, जो एक copylefted संगतता पुस्तकालय के शीर्ष पर चलने के लिए लिखे गए कार्यक्रमों की आवश्यकता होती है source codeMinGWप्रत्यक्ष के माध्यम से मूल कार्यक्षमता और प्रदर्शन प्रदान करना है Windows API calls। इसके विपरीत Cygwin,MinGWएक संगतता परत की आवश्यकता नहीं है DLLऔर इस प्रकार कार्यक्रमों को वितरित करने की आवश्यकता नहीं है source code

क्योंकि MinGWयह निर्भर है Windows API calls, यह पूर्ण प्रदान नहीं कर सकता है POSIX API; यह कुछ संकलित करने में असमर्थ है UNIX applicationsजिसे संकलित किया जा सकता है Cygwin। विशेष रूप से, यह उन अनुप्रयोगों पर लागू होता है जिनके लिए POSIXकार्यक्षमता की आवश्यकता होती है fork(), mmap()या ioctl()जिनके चलने की अपेक्षा की जाती है POSIX environment। एक का उपयोग करके लिखा अनुप्रयोग cross-platform libraryहै जो अपने आप में पोर्ट किया गया है MinGWके रूप में, इस तरह के SDL, wxWidgets, Qt, या GTK+, आम तौर पर के रूप में आसानी में संकलित कर देगा MinGWवे में होगा के रूप में Cygwin

का संयोजन MinGWऔर MSYSएक छोटा, आत्म-निहित वातावरण प्रदान करता है जिसे कंप्यूटर पर रजिस्ट्री या फ़ाइलों में प्रविष्टियों को छोड़ने के बिना हटाने योग्य मीडिया पर लोड किया जा सकता है। Cygwinपोर्टेबल एक समान सुविधा प्रदान करता है। अधिक कार्यक्षमता प्रदान करके, Cygwin स्थापित करने और बनाए रखने के लिए और अधिक जटिल हो जाता है।

इसके cross-compile Windows applicationsसाथ भी संभव है MinGW-GCC under POSIX systems। इसका मतलब यह है कि डेवलपर्स MSYSको सॉफ़्टवेयर संकलित करने के लिए एक विंडोज इंस्टॉलेशन की आवश्यकता नहीं है जो Windowsबिना चलेगा Cygwin


2
यह निश्चित रूप से "स्थापित करने और बनाए रखने के लिए अधिक जटिल नहीं है " ! का प्रयोग करें apt-cygयह शायद और भी आसान उपयुक्त तहत WSL का उपयोग करने से है के रूप में।
नॉटआउट 2

14

एटी एंड टी के यू / विन सॉफ्टवेयर को अनदेखा न करें , जो विंडोज़ पर यूनिक्स अनुप्रयोगों को संकलित करने में आपकी सहायता के लिए बनाया गया है (अंतिम संस्करण 2012-08-06; एक्लिप्स पब्लिक लाइसेंस, संस्करण 1.0 का उपयोग करता है)।

साइगविन की तरह उन्हें एक पुस्तकालय के खिलाफ दौड़ना होगा; उनके मामले में POSIX.DLL। AT & T लोग भयानक इंजीनियर हैं (वही समूह जो आपके लिए ksh और dot लाया है ) और उनके सामान की जाँच करने लायक है।


4
वाह, वे कुछ बुरे वेब पेज हैं। मैं आखिरकार www2.research.att.com/sw/download पर एक डाउनलोड लिंक खोजने में सक्षम था , लेकिन परियोजना के बारे में कोई ऑनलाइन प्रलेखन या जानकारी नहीं थी।
फेंटियस

1
जबकि जानकारी उपयोगी है, मुझे लगता है कि यह इस प्रश्न के बजाय मिंगव या साइगविन के लिए विकल्पों पर एक प्रश्न का उत्तर हो सकता है।
विवेक

12

अन्य जवाब पहले से ही निशाने पर आ गए। मैं सिर्फ एक त्वरित कैच के लिए दृष्टांत जोड़ना चाहता हूं।

यहाँ छवि विवरण दर्ज करें


11

Cygwin पूरे POSIX वातावरण का अनुकरण करता है, जबकि MinGW केवल संकलन के लिए न्यूनतम उपकरण सेट है (देशी विन एप्लिकेशन को संकलित करता है।) इसलिए यदि आप अपने प्रोजेक्ट को क्रॉस-प्लेटफ़ॉर्म बनाना चाहते हैं तो दोनों के बीच का विकल्प स्पष्ट है, MinGW।

हालाँकि आप विन्डोज़, जीसीसी पर लिनक्स / यूनिक्स पर वीएस का उपयोग करने पर विचार कर सकते हैं। अधिकांश ओपन सोर्स प्रोजेक्ट्स (जैसे फ़ायरफ़ॉक्स या पायथन) करते हैं।


"अधिकांश" यहां एक अर्थहीन नेवला शब्द की तरह लगता है, विशेष रूप से केवल 2 उदाहरण और कोई आंकड़े नहीं। कई FOSS प्रोजेक्ट एक वीएस प्रोजेक्ट फ़ाइल में एक टोकन इशारे के रूप में फेंकते हैं, मुझे संदेह है कि यह अधिक सटीक है। लेकिन अगर अतीत के अनुभव कुछ भी हों, तो जीसीसी या क्लैंग आमतौर पर सुरक्षित होते हैं क्योंकि वीएस भाषा के मानकों के विकसित होते ही काफी पिछड़ जाते हैं।
अंडरस्कोर_ड

यह 2009 से एक जवाब है। आजकल चीजें जीसीसी के लिए और भी अधिक अस्पष्ट लगती हैं। "अधिकांश" के रूप में, यदि आप प्रभाव से मापते हैं, तो केवल फ़ायरफ़ॉक्स और क्रोम में अकेले किसी भी चीज़ की तुलना में अधिक उपयोगकर्ता हैं।
vartec

2
जब से मैंने उत्तर दिया है तब से यह बदल गया है कि अब clangएक व्यवहार्य क्रॉस-प्लेटफ़ॉर्म समाधान है।
vartec

9

ध्यान दें कि उपयोगिता व्यवहार वास्तव में दोनों के बीच भिन्न हो सकते हैं।

उदाहरण के लिए, साइगविन टार्क कांटा - क्योंकि फोर्क () डीएलएल में समर्थित है - जहां मिंगव वर्जन नहीं कर सकता है। यह एक समस्या है जब स्रोत से mysql को संकलित करने की कोशिश की जाती है।


यही कारण है कि पूरी तरह से MinGW- सक्षम वातावरण, जैसे MSYS2, भवन के दौरान आवश्यक टूलचिन्स के निम्न-स्तरीय नट और बोल्ट के लिए एक Cygwin या अन्य पूरी तरह से POSIX- संगत परत प्रदान करते हैं। फिर वास्तविक संकलन और लिंकिंग पूरी तरह से मूल MinGW कंपाइलर पर छोड़ दिया जाता है। MSYS2 वास्तव में साफ है।
अंडरस्कोर_ड

9

एक वाणिज्यिक / मालिकाना / गैर-ओपन-सोर्स एप्लिकेशन में सिगविन का उपयोग करने के लिए, आपको Red Hat से " लाइसेंस बायआउट " के लिए दसियों हज़ार डॉलर निकालने होंगे ; यह मानक लाइसेंस शर्तों को काफी लागत पर अमान्य करता है । Google "साइबर लाइसेंस की लागत" और पहले कुछ परिणाम देखें।

मिंगव के लिए, इस तरह की कोई लागत नहीं है, और लाइसेंस (पीडी, बीएसडी, एमआईटी) बेहद अनुमत हैं। अधिकांश से आपको अपने आवेदन के साथ लाइसेंस विवरण की आपूर्ति करने की उम्मीद की जा सकती है, जैसे कि mww64-tdm का उपयोग करते समय आवश्यक winpthreads लाइसेंस।

ईजीआईटी का धन्यवाद इज़ी हेलियनथस के लिए: वाणिज्यिक लाइसेंस अब उपलब्ध नहीं है या आवश्यक नहीं है क्योंकि सिग्विन के विंडस उपनिर्देशिका में पाया गया एपीआई पुस्तकालय अब एलजीपीएल के तहत वितरित किया जा रहा है, पूर्ण जीपीएल के विपरीत।


2
Redhat वेबसाइट से अपडेट ("लाइसेंस बायआउट से लिंक" - 1 मार्च, 2016 तक Red Hat अब Cygwin के लिए वाणिज्यिक Buyout लाइसेंस नहीं बेचता है। वाणिज्यिक लाइसेंस अब आवश्यक नहीं है, क्योंकि Cygwin को अब GNGS पाठ के तहत वितरित किया जा रहा है। GPL (LGPL)। '> Cygwin वेबसाइट से। स्रोत कोड के winup उपनिर्देशिका में पाया गया Cygwin ™ API लाइब्रेरी GNU लेसर जनरल पब्लिक लाइसेंस (LGPL) संस्करण 3 या बाद के संस्करण द्वारा कवर किया गया है। LGPLv3 की आवश्यकताओं के विवरण के लिए। कृपया GNU लेसर जनरल पब्लिक लाइसेंस (LGPL) पढ़ें।
Izzy Helianthus

6

Cygwin को Windows के लिए अधिक या कम पूर्ण POSIX वातावरण प्रदान करने के लिए डिज़ाइन किया गया है, जिसमें पूर्ण-लिनक्स लिनक्स जैसे प्लेटफ़ॉर्म प्रदान करने के लिए डिज़ाइन किए गए टूल का एक व्यापक सेट शामिल है। इसकी तुलना में, मिनगीडब्ल्यू और एमएसवाईएस एक हल्के, न्यूनतम पॉसिक्स जैसी परत प्रदान करते हैं, जिसमें केवल अधिक आवश्यक उपकरण जैसे उपलब्ध gccऔर bashउपलब्ध हैं। मिनगॉव के अधिक न्यूनतम दृष्टिकोण के कारण, यह पोसिक्स एपीआई कवरेज साइग्विन ऑफ़र की डिग्री प्रदान नहीं करता है, और इसलिए कुछ निश्चित कार्यक्रमों का निर्माण नहीं कर सकता है जो अन्यथा सिग्विन पर संकलित किए जा सकते हैं।

दोनों द्वारा उत्पन्न कोड के संदर्भ में, सिग्विन टूलचैन एक बड़े रनटाइम लाइब्रेरी के लिए डायनेमिक लिंकिंग पर निर्भर करता है cygwin1.dll, जबकि मिनगव टूलकैन बायनेरिज़ के लिए कोड संकलित करता है जो गतिशील रूप से विंडोज देशी सी लाइब्रेरी के msvcrt.dllसाथ-साथ भागों के लिए सांख्यिकीय रूप से लिंक करता है glibc। Cygwin निष्पादक इसलिए अधिक कॉम्पैक्ट होते हैं, लेकिन एक अलग पुनर्वितरण DLL की आवश्यकता होती है, जबकि MinGW बायनेरिज़ को स्टैंडअलोन भेज दिया जा सकता है लेकिन बड़ा हो सकता है।

तथ्य यह है कि साइग्विन-आधारित कार्यक्रमों को चलाने के लिए एक अलग डीएलएल की आवश्यकता होती है जो लाइसेंसिंग प्रतिबंधों की ओर जाता है। Cygwin रनटाइम लाइब्रेरी को GPLv3 के तहत लाइसेंस प्राप्त किया गया है, जिसमें OSI- अनुरूप लाइसेंस के साथ आवेदन के लिए एक अपवाद है, इसलिए Cygwin के चारों ओर एक बंद स्रोत एप्लिकेशन बनाने के इच्छुक डेवलपर्स को Red Hat से व्यावसायिक लाइसेंस प्राप्त करना होगा। दूसरी ओर, मिनगडब्ल्यू कोड का उपयोग ओपन-सोर्स और क्लोज-सोर्स दोनों अनुप्रयोगों में किया जा सकता है, क्योंकि हेडर और लाइब्रेरीज़ को लाइसेंस प्राप्त है।


3

साइगविन माइक्रोसॉफ्ट विंडोज के लिए यूनिक्स जैसा वातावरण और कमांड-लाइन इंटरफेस है।

मिंगव माइक्रोसॉफ्ट विंडोज के लिए जीएनयू कंपाइलर कलेक्शन (जीसीसी) का एक देशी सॉफ्टवेयर पोर्ट है, साथ ही विंडोज एपीआई के लिए स्वतंत्र रूप से वितरण योग्य आयात पुस्तकालयों और हेडर फ़ाइलों का एक सेट है। MinGW डेवलपर्स को मूल Microsoft Windows अनुप्रयोग बनाने की अनुमति देता है।

आप पर्यावरण के mingwबिना उत्पन्न बायनेरिज़ को चला सकते हैं cygwin, बशर्ते कि सभी आवश्यक पुस्तकालय (DLL) मौजूद हों।


1

Cygwin जबकि अनुकूलता परत का उपयोग करता है MinGWदेशी है है। यह मुख्य अंतरों में से एक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.