2010-01-18 20 views
15

मैं cygwin के बारे में कुछ सवाल है:
कुछ मुद्दे Cygwin [Windows में लिनक्स] (सॉकेट, धागा, अन्य प्रोग्रामिंग और खोल मुद्दों) के बारे में

  1. मैं उपयोग कर सकते हैं Cygwin सॉकेट विकसित आधारित कोड?
  2. क्या सिगविन read() और write() फ़ंक्शन जो फ़ाइल वर्णनकर्ताओं के साथ काम करते हैं?
  3. क्या मैं सिगविन में पाथ्रेड लाइब्रेरी का उपयोग कर सकता हूं?
  4. क्या कोड जो सिगविन में संकलित करता है बिना किसी बदलाव के या लिनक्स में लिनक्स में संकलित करता है?
  5. क्या एक निष्पादन योग्य फ़ाइल सिग्विन लिनक्स में चलती है?
  6. सिग्विन को लिंकर विकल्प -lpthread विकल्प क्यों नहीं है जब मैं pthread लाइब्रेरी का उपयोग करता हूं?
  7. क्यों #include <iostream> में मुझे using namespace std; का उपयोग करने की आवश्यकता नहीं है?
  8. क्या मैं साइगविन में क्यूटी के साथ काम कर सकता हूं? यदि हां, तो कैसे?
  9. क्या मैं अपने लिनक्स को अन्य
  10. विभाजन सिग्विन के साथ बूट कर सकता हूं और इसका उपयोग कर सकता हूं?
  11. क्या मैं अन्य विभाजन तक पहुंच सकता हूं जो सिगविन में EXT3 है?

उत्तर

14

1: हां। सॉकेट पुस्तकालयों को सिग्विन के साथ भेज दिया जाता है - कई सॉकेट आधारित ऐप्स जैसे web servers को मूल वितरण में शामिल किया गया है।

2: हां। मुझे लगता है कि जीएनयू सी रनटाइम और पुस्तकालय में सभी 'सेक्शन 2 और 3' सिस्टम कॉल सिग्विन रनट्यूम द्वारा कार्यान्वित किए जाते हैं। आप इसे सिगविन के साथ आने वाले मैन पेजों में देख सकते हैं। सिग्विन द्वारा कार्यान्वित सिस्टम कॉल और std lib कॉल की एक सूची here.

3: हां। सिथविन में पाथ्रेड शामिल है।link above में उल्लिखित सूची में भी pthreads का उल्लेख है।

4: जीएनयू पुस्तकालयों के खिलाफ निर्मित कुछ भी सिग्विन और लिनक्स के बीच कम या कोई बदलाव नहीं करना चाहिए (मान लीजिए कि सिग्विन पर कोई निर्भरता नहीं है)। सीपीयू आर्किटेक्चर के आधार पर आपको word alignment, endianness और अन्य आर्किटेक्चर-विशिष्ट पोर्टिंग समस्याओं के बारे में चिंता करनी पड़ सकती है, लेकिन यदि आप इंटेल पर विंडोज और लिनक्स को लक्षित कर रहे हैं तो आपके कोड में कुछ होगा यदि CPU आर्किटेक्चर से उत्पन्न होने वाले किसी भी पोर्टिंग समस्याएं हों।

5: पर सिगविन डिफ़ॉल्ट रूप से अपने साझा पुस्तकालयों के खिलाफ एक कार्यक्रम तैयार करेगा लेकिन जीसीसी अन्य प्लेटफार्मों को लक्षित करने के लिए क्रॉस-संकलन कर सकता है। आप (सिद्धांत रूप में) संकलक द्वारा समर्थित किसी भी लक्ष्य को पार करने के लिए जीसीसी सेट अप कर सकते हैं। जीसीसी के साथ क्रॉस-कंपाइलिंग के बारे में plenty of resources on the web हैं, और मुझे नहीं लगता कि प्रक्रिया सिगविन पर भौतिक रूप से अलग होगी।

ध्यान दें कि सिग्विन बाइनरी लिनक्स पर नहीं चलेंगे - या इसके विपरीत। आपको अभी भी दोनों के लिए अलग-अलग निर्माण की आवश्यकता होगी।

6: पर नहीं - अनुमान में यह मानक रनटाइम में शामिल है, शायद इसलिए कि किसी कारण से Win32 थ्रेडिंग एपीआई को लपेटना आवश्यक था।

7 पर: पता नहीं है - यह शायद जी ++ सभी प्लेटफार्मों पर पर ही है। स्पष्ट रूप से एक कंपाइलर बग। Dan Moulding's Answer इसे और अधिक विस्तार से कवर करता है।

8: हां। आईआईआरसी QT is available in the standard builds और यह निश्चित रूप से सिगविन पर संकलित होगा। लिनक्स/यूनिक्स के साथ, सिग्विन पर क्यूटी एक एक्स 11 बैकएंड का उपयोग करता है, इसलिए आपको एक्स सर्वर होना चाहिए जैसे कि XMing चल रहा है।

एक्स सर्वर पर निर्भरता से बचने के लिए आप build QT apps against the Win32 API, पर जा सकते हैं। MinGW के साथ ऐसा करना संभव है, जो कि जीसीसी के साथ देशी Win32 ऐप्स बनाने के लिए हेडर फाइलों और पुस्तकालयों का एक सेट है। MinGW का उपयोग सिगविन पर्यावरण (सिग्विन क्रॉस-कंपाइलिंग पर गैर-सिग्विन लक्ष्य पर जीसीसी का एक उदाहरण) से किया जा सकता है और cygwin.com से आपको इसे इंस्टॉल करने का विकल्प देता है।

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

हालांकि, भाषा और उपलब्ध पुस्तकालयों में इन डायलेक्टिक भिन्नताएं (उदाहरण के लिए एमएसवीसी getopt के कार्यान्वयन के साथ नहीं आती) का मतलब है कि मिनजीडब्लू और एमएसवीसी के बीच पोर्टिंग कार्यक्रम काफी स्पष्ट रूप से हो सकते हैं। मेरा अनुभव - स्वीकार्य रूप से व्यापक रूप से व्यापक नहीं है क्योंकि मैंने इसे केवल कुछ बार किया है - क्या मिनीजीडब्ल्यू और एमएसवीसी के बीच पोर्टिंग के मुकाबले मिनगब्लू 32 और लिनक्स के बीच पोर्टिंग अनुप्रयोग आसान है। स्पष्ट रूप से गैर-पोर्टेबल निर्भरताओं वाले ऐप्स जैसे कि Win32 विशिष्ट API उपयोग के लिए नए प्लेटफ़ॉर्म के लिए निर्भर घटकों को फिर से लिखा जाना आवश्यक है, लेकिन मानक libs, हेडर फ़ाइलों और भाषा बोली में अंतर के साथ आपको बहुत कम समस्याएं होंगी।

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

संपादित करें: Cygwin में क्यूटी विकास संकुल हैं:

  • QT4: क्यूटी अनुप्रयोग फ्रेमवर्क (स्रोत)
  • QT4-devel-उपकरण: क्यूटी 4 सहायक, डिजाइनर, और भाषाविद्
  • QT4 -doc: क्यूटी 4 API दस्तावेज़
  • QT4-qtconfig: क्यूटी 4 डेस्कटॉप विन्यास एप्लिकेशन
  • QT4-qtdemo: क्यूटी 4 डेमो और उदाहरण

आपको शायद gcc4-g ++ और कुछ अन्य बिट्स और टुकड़ों की भी आवश्यकता होगी। This listing on the cygwin web site में पैकेज की एक सूची है।

+0

साइगविन में QT का उपयोग करने के लिए कौन सा पैकेज स्थापित करना चाहिए? – SjB

+0

qt4- * - संपादन देखें। – ConcernedOfTunbridgeWells

+0

क्यूटी में धन्यवाद अच्छा जवाब! – SjB

2

, हाँ, हाँ, हां हां (यदि आप इसे ध्यान से लिख सकते हैं और cygwin के लिए विशिष्ट कुछ भी उपयोग नहीं करते हैं), नंबर

5 पर: यह संभव हो सकता है के लिए Cygwin से पार संकलन लिनक्स, मैं वास्तव में नहीं जानता। यदि ऐसा है, तो तकनीकी रूप से कुछ निष्पादन योग्य "सिगविन द्वारा निर्मित" लिनक्स पर चलेंगे। लेकिन सिग्विन एक्जिक्यूटिव लिनक्स पर नहीं चलेंगे।

3

5 को छोड़कर उन सभी को "हां"। आपको लिनक्स के लिए अलग-अलग अपने निष्पादन योग्य बनाना होगा, लेकिन यह 4 से उत्तर "हां" के बाद से सीधा होना चाहिए।

सुनिश्चित करें कि आप दोनों प्लेटफॉर्म पर आवश्यक सभी विकास शीर्षलेख स्थापित करें।

1

# 7 के जवाब में, आपके पास सी ++ कंपाइलर का संस्करण शायद पुराना है। आप linux/POSIX पोर्टेबिलिटी की जरूरत नहीं है, मैं गैर cygwin MinGW जीसीसी संकलक करने के लिए स्विच चाहते हैं - आप http://tdragon.net/recentgcc/

+0

मैं सिग्विन – SjB

1

6 के बारे में पर 4.4.1 प्राप्त कर सकते हैं, तो आप -lpthread जरूरत नहीं है क्योंकि pthreads समर्थन है सिग्विन डीएलएल का हिस्सा।

+0

में जीसीसी 4 का उपयोग करता हूं धन्यवाद अच्छा जवाब – SjB

2

1-4: इनके जवाब सभी "हां" हैं, क्योंकि इन सभी सुविधाओं के बारे में आप पूछ रहे हैं POSIX मानक का हिस्सा हैं। सिग्विन मूल रूप से विंडोज के लिए एक पॉज़िक्स परत है, इसलिए स्वाभाविक रूप से, सिगविन इन सभी सुविधाओं को शामिल करता है।

5: नहीं, सिग्विन बाइनरी लिनक्स कर्नेल के तहत निष्पादित नहीं होंगे, क्योंकि आखिरकार सिगविन द्वारा उत्पन्न कोड विंडोज मूल कोड है। यह सामान्य विंडोज डीएलएल (जैसे kernel32.dll) से लिंक होगा, जबकि लिनक्स में डीएलएल की धारणा भी नहीं है (इसने ऑब्जेक्ट्स साझा की हैं जो समान हैं, लेकिन अलग हैं)। सबसे महत्वपूर्ण बात यह है कि सिग्विन के तहत बनाए गए निष्पादन योग्य पीई प्रारूप में होंगे, लेकिन लिनक्स आम तौर पर एक्जिक्यूटिव के लिए ईएलएफ प्रारूप का उपयोग करता है। आप, निश्चित रूप से, सिगविन के तहत क्रॉस-कंपाइलिंग कर सकते हैं, और इस प्रकार देशी लिनक्स एक्जिक्यूटिव उत्पन्न कर सकते हैं, लेकिन ऐसा लगता है कि आप यही खोज रहे हैं। साथ ही, सिग्विन के तहत क्रॉस-कंपाइलर के रूप में उपयोग करने के लिए जीसीसी के एक नए संस्करण को संकलित करना संभवतः कोई छोटा कार्य नहीं है।

6: Cygwin के तहत जीसीसी -lpthread के उपयोग की आवश्यकता नहीं है क्योंकि Cygwin के तहत pthread कोड के सभी cygwin1.dll जो हमेशा डिफ़ॉल्ट रूप से में जुड़ा हुआ है में है।

7:This is a bug in GCC (सभी प्लेटफ़ॉर्म पर)। यह लंबे समय के लिए आसपास रहा है और शायद कभी तय नहीं किया जाएगा।

8: ConcernedOfTunbridgeWells ने इसे समझाने का एक अच्छा काम किया है, इसलिए मेरे कहने के लिए बहुत कुछ नहीं बचा है। हालांकि, यह ध्यान देने योग्य है कि सिगविन की पैकेज सूची में X.org एक्स विंडो सिस्टम है। सिग्विन 1.7.एक्स के साथ, इसे स्थापित करना और इसका उपयोग करना हवा है और यह बहुत रॉक-ठोस लगता है। यदि आप एक्स के साथ क्यूटी का उपयोग करना चाहते हैं, तो मैं सिग्विन के एक्स सर्वर का उपयोग करने की सलाह दूंगा।

+0

+1 # 7 के लिए एक संगत उत्तर के लिए +1, हालांकि Xming मानक सिग्विन एक से बेहतर सामान्य उद्देश्य एक्स सर्वर है। आईएमओ एक्सएमिंग लगभग स्टर्नेट जितनी अच्छी है। – ConcernedOfTunbridgeWells

संबंधित मुद्दे