Windows और Linux दो अलग-अलग प्रणालियां हैं, और इसलिए, अक्सर लिखे गए प्रोग्राम को पोर्ट करना आसान नहीं होता है एक के लिए दूसरे के लिए, खासकर जब जीयूआई कार्यक्रमों से निपटते हैं। हालांकि कई अलग-अलग क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी और एसडीके हैं, लेकिन पोर्टेबिलिटी को ध्यान में रखे बिना लिखे गए नेटिव प्रोग्राम को पोर्ट करना काफी मुश्किल होता है।
जब विंडोज़ पर लिनक्स के लिए लिखे गए प्रोग्रामों को संकलित करने और चलाने की बात आती है, तो एक समाधान होता है जिसे सिगविन कहा जाता है। सिग्विन प्रोजेक्ट विंडोज के लिए सबसे आम टूल और कंपाइलर (बैश शेल और जीएनयू कंपाइलर चेन सहित) का एक संग्रह है। इसमें एक पुस्तकालय भी शामिल है जो एक संगतता परत प्रदान करता है ताकि लिनक्स विशिष्ट एपीआई को कॉल करने वाले कार्यक्रमों को संकलित किया जा सके। सिगविन एक एमुलेटर या वर्चुअल मशीन नहीं है, और यह लिनक्स बायनेरिज़ को पहले पुन:संकलित किए बिना विंडोज़ पर चलने की अनुमति नहीं देता है।
सिग्विन स्थापना पृष्ठ पर जाएं और 32-बिट या 64-बिट सेटअप निष्पादन योग्य डाउनलोड करें (यह निर्भर करता है कि आप किस प्रकार के विंडोज का उपयोग कर रहे हैं)। सेटअप प्रोग्राम निष्पादित करें। अगला और अगला फिर से क्लिक करें ("इंटरनेट से स्थापित करें")। डिफ़ॉल्ट निर्देशिका "सी:\ साइबरविन" है। यदि आवश्यक हो तो इसे बदला जा सकता है, लेकिन जब तक आपके पास इसे बदलने का कोई विशेष कारण न हो, डिफ़ॉल्ट सबसे अच्छा है। अगला, अगला और अगला फिर से क्लिक करें।
सिगविन परियोजना के पूरे विश्व में दर्पण स्थल हैं; वह चुनें जो आपको लगता है कि आपके स्थान की सबसे अच्छी सेवा करेगा और अगला क्लिक करें। अब आपको चुनने की जरूरत है कि कौन से पैकेज इंस्टॉल करने हैं। विंडोज़ में सरल लिनक्स प्रोग्राम संकलित करने के लिए, आपको जीएनयू कंपाइलर चेन (जीसीसी) की आवश्यकता होगी जो सी और सी ++ कंपाइलर प्रदान करता है।
खोज बॉक्स में "gcc" टाइप करें और फिर संकुल की सूची में "Devel" के बगल में छोटे प्लस चिह्न पर क्लिक करें। "gcc-core" और "gcc-g++" ढूंढें और प्रत्येक के लिए "छोड़ें" पर क्लिक करें। शब्द "छोड़ें" एक संस्करण संख्या में बदल जाएगा और "बिन" में "एन / ए" चिह्न बदल जाएगा? कॉलम एक चेक बॉक्स में बदल जाएगा। सर्च बॉक्स में "मेक" टाइप करें और "डेवेल" के तहत "मेक" ढूंढें। इसे स्थापित करने के लिए चिह्नित करने के लिए "छोड़ें" पर क्लिक करें। "Wget" के लिए खोजें और इसे "वेब" से इंस्टॉल के लिए भी चिह्नित करें। नीचे दिए गए उदाहरण को बनाने के लिए, हमें "libiconv" की भी आवश्यकता होगी। इसे खोजें और इसे इंस्टॉल के लिए चिह्नित करें।
अगला पर क्लिक करें। इंस्टॉलर तब देखेगा कि किसी निर्भरता को हल करने के लिए अन्य पैकेजों को स्थापित करने की आवश्यकता है। अनुशंसाओं को स्वीकार करने के लिए अगला क्लिक करें।
एक बार सभी पैकेज डाउनलोड और इंस्टॉल हो जाने के बाद, इंस्टॉलर के बाहर निकलने तक अंतिम चरणों का पालन करें। लिनक्स जैसे विकास वातावरण में प्रवेश करने के लिए "सिगविन टर्मिनल" शुरू करें। टर्मिनल में आप "डीआईआर" जैसे विंडोज़ कमांड का उपयोग नहीं करते बल्कि "एलएस" जैसे शेल कमांड का उपयोग करते हैं।
विंडोज के तहत लिनक्स प्रोग्राम को कैसे संकलित किया जाए, यह प्रदर्शित करने के लिए, हम W3 से HTML-XML पैकेज का उपयोग करेंगे। यह क्या कर सकता है, इस पर एक नज़र डालने के लिए, कमांड लाइन से HTML और XML फ़ाइलों में हेरफेर कैसे करें देखें।
"wget" का उपयोग करके स्रोत फ़ाइलें डाउनलोड करें:
wget https://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz
अब आर्काइव फाइल को अनपैक करें:
tar -zxf html-xml-utils-6.7.tar.gz
स्रोत फ़ाइलें अब "html-xml-utils-6.7" निर्देशिका में हैं। वह निर्देशिका दर्ज करें:
cd html-xml-utils-6.7
इससे पहले कि फ़ाइलें बनाई जा सकें, आपको मेकफ़ाइल (निर्माण निर्देश) उत्पन्न करने के लिए "कॉन्फ़िगर" शेल स्क्रिप्ट चलाने की आवश्यकता है जो इस निर्माण वातावरण के लिए उपयुक्त हैं। स्रोत से पैकेज बनाते समय यह Linux (और Cygwin) पर एक सामान्य चरण है।
./configure
एक बार "कॉन्फ़िगर" समाप्त हो जाने के बाद, आप "मेक" का उपयोग करके निर्माण शुरू कर सकते हैं:
<पूर्व>बनानानिर्माण आंशिक रूप से विफल हो जाएगा। मैं दो दिमाग में था कि आगे क्या करना है। या तो मैं किसी अन्य प्रोजेक्ट पर स्विच कर सकता हूं और इसे अपने स्रोत या लड़ाई से HTML-XML-utils के साथ बना सकता हूं। मैंने बाद वाले को चुना क्योंकि यह दर्शाता है कि सिगविन के तहत लिनक्स प्रोग्राम को संकलित करने का प्रयास करते समय सब कुछ वॉक-इन-द-पार्क नहीं होगा। इस विशेष समस्या का समाधान सरल है। त्रुटि संदेश से पता चलता है कि लिंकर "आइकनव" लाइब्रेरी नहीं ढूंढ पा रहा है। लिंक कमांड पर एक त्वरित नज़र से पता चलता है कि पुस्तकालय निर्दिष्ट नहीं है। त्वरित और गंदा समाधान कमांड को मैन्युअल रूप से चलाना और लिंकर को libconv का उपयोग करने के लिए कहना है। इसे ठीक करने का "उचित" तरीका यह होगा कि यह पता लगाने के लिए कि यह काम क्यों नहीं कर रहा है, मेकफ़ाइल आदि में तल्लीन करना शुरू करें।
अंत में "-liconv" को शामिल करते हुए, निम्न कमांड चलाएँ:
gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o Connectsock.o type.o tree.o genid.o dtd .o Headers.o dict.o fopencookie.o -liconv
एक बार "hxindex.exe" फ़ाइल बन जाने के बाद, आप फिर से "मेक" टाइप करके बाकी बिल्ड के साथ जारी रख सकते हैं। जिस तरह से "मेक" काम करता है वह यह जांचता है कि क्या बनाया गया है और क्या नहीं बनाया गया है, और फिर यह उचित बिंदु पर निर्माण प्रक्रिया जारी रखता है। चूंकि हमने मैन्युअल रूप से "hxindex.exe" बनाया है, "मेक" बस अपनी सूची में अगले बाइनरी के साथ चलता है।
जब "मेक" पूरा हो जाता है, तो आपके पास html-xml-utils-6.7 निर्देशिका में सभी .exe फ़ाइलें होंगी।
यदि आप सिगविन का उपयोग करके फंस जाते हैं तो आपको अक्सर पूछे जाने वाले प्रश्न और दस्तावेज़ीकरण को देखना चाहिए। ऐसा न होने पर, प्रोजेक्ट में मेलिंग सूचियों का एक सेट होता है। यदि आपको ऊपर वर्णित चरणों में कोई समस्या है, तो कृपया नीचे टिप्पणी अनुभाग का उपयोग करें।