2012-03-07 14 views
5

मैं सोच रहा हूं कि कौन सी परिस्थितियां सी कोड को संकलित करने के लिए सिगविन का उपयोग करती हैं और जब कोई मिनीगब्लू का चयन करेगा। मैं What is the difference between Cygwin and MinGW? से अधिक आया जो सिगविन और मिनजीडब्ल्यू के बीच अंतर का वर्णन करता है।सी कोड संकलित करने के लिए Cygwin या MinGW का उपयोग कब करें?

जहां तक ​​मैं समझ गया, एक कह सकते हैं निम्नलिखित:

  • Cygwin: की अनुमति देता है POSIX शिकायत ऑपरेटिंग सिस्टम विंडोज पर चलने के लिए के लिए संकलन सी स्रोत कोड (cygwin1.dll आवश्यकता है)। उदाहरण के लिए, मैं विंडोज के लिए pthreads एपीआई का उपयोग कर एक आवेदन संकलित कर सकता हूं, हालांकि विंडोज़ एपीआई को लागू नहीं करता है।
  • मिनजीडब्ल्यू: विंडोज अनुपालन सी स्रोत कोड संकलित करने की अनुमति देता है। तो उपर्युक्त उदाहरण का उपयोग करके, मैं मिनीजीडब्ल्यू में जीसीसी के साथ संकलन करते समय pthreads API का उपयोग नहीं कर सका, लेकिन विंडोज़ द्वारा प्रदान किए गए थ्रेड एपीआई का उपयोग करने की आवश्यकता होगी। MinGW जीसीसी कंपाइलर का उपयोग करने के बजाय, मैं एक अलग कंपाइलर का उपयोग भी कर सकता हूं, उदा। वह जो वीसी ++ के साथ आता है।

हालांकि, मेरी समझ गलत लगती है, क्योंकि मैं एक डमी प्रोग्राम को संकलित करने में सक्षम था जिसमें MinGW के साथ pthread.h शामिल था। मैंने गलत तरीके से क्या समझ लिया?

उत्तर

3

आपकी समझ अनिवार्य रूप से सही है। हालांकि, एक Win32 pthreads पोर्ट है, जो मूल धागे एपीआई पर एक पतला आवरण है।

एक और उपयुक्त उदाहरण fork() होगा, जिसे Win32 पर आसानी से नकल नहीं किया जा सकता है। ऐसा करने के लिए, सिगविन एक निश्चित डीएलएल मेमोरी लेआउट लागू करता है, और अगर लाइब्रेरी को लोड नहीं किया जा सकता है तो चीजें विस्फोट हो जाएंगी (क्यू rebaseall)।

+0

तो मुझे लगता है कि यह Win32 pthreads पोर्ट MinGW में शामिल है? – simon

+0

@ सिमॉन: इसका उपयोग नहीं किया गया था, लेकिन स्पष्ट रूप से यह 2010-02-18 के बाद से एक मिनीजीडब्ल्यू बेस पैकेज है (देखें http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/) – Christoph

+0

@ क्रिस्टोफ सिगविन इस तरह के एक निश्चित डीएलएल मेमोरी लेआउट को लागू नहीं करता है, लेकिन इसे माता-पिता के समान पते पर एक फोर्क प्रक्रिया में डीएलएल लोड करने में सक्षम होना आवश्यक है। – ak2