परिचय
विंडोज और लिनक्स दो बहुत अलग सिस्टम हैं, और जैसे, एक के लिए लिखे गए प्रोग्राम को दूसरे पर पोर्ट करना अक्सर आसान नहीं होता, खासकर GUI प्रोग्राम्स के साथ। यद्यपि कई अलग-अलग क्रॉस-प्लेटफॉर्म लाइब्रेरी और SDK हैं, पोर्टेबिलिटी को ध्यान में रखे बिना लिखे गए नेटिव प्रोग्राम को पोर्ट करना काफी कठिन होता है।
जब विंडोज पर लिनक्स के लिए लिखे गए प्रोग्राम्स को कंपाइल और चलाने की बात आती है, तो एक समाधान है जिसे साइगविन (Cygwin) के नाम से जाना जाता है। साइगविन प्रोजेक्ट विंडोज के लिए सबसे आम टूल्स और कंपाइलर्स (बैश शेल और GNU कंपाइलर चेन सहित) का एक संग्रह है। इसमें एक लाइब्रेरी भी शामिल है जो एक संगतता परत प्रदान करती है ताकि लिनक्स-विशिष्ट API को कॉल करने वाले प्रोग्राम्स को कंपाइल किया जा सके। साइगविन न तो एक एमुलेटर है और न ही वर्चुअल मशीन, और यह लिनक्स बाइनरी को बिना री-कंपाइल किए विंडोज पर चलाने की अनुमति नहीं देता।
इंस्टॉलेशन
साइगविन इंस्टॉलेशन पेज पर जाएं और 32-बिट या 64-बिट सेटअप एक्जीक्यूटेबल डाउनलोड करें (इस पर निर्भर करता है कि आप विंडोज का कौन सा संस्करण उपयोग कर रहे हैं)। सेटअप प्रोग्राम चलाएं। नेक्स्ट पर क्लिक करें और फिर से नेक्स्ट ("Install from Internet" के लिए)। डिफ़ॉल्ट डायरेक्टरी "C:\cygwin" है। इसे बदला जा सकता है, लेकिन जब तक आपके पास इसे बदलने का कोई विशेष कारण न हो, डिफ़ॉल्ट सर्वोत्तम है। नेक्स्ट, नेक्स्ट और फिर से नेक्स्ट पर क्लिक करें।
साइगविन प्रोजेक्ट के दुनिया भर में मिरर साइट्स हैं; एक चुनें जो आपको लगता है कि आपके स्थान के लिए सबसे अच्छा काम करेगा और नेक्स्ट पर क्लिक करें। अब आपको इंस्टॉल करने के लिए पैकेज चुनने होंगे। विंडोज में साधारण लिनक्स प्रोग्राम्स को कंपाइल करने के लिए, आपको GNU कंपाइलर चेन (GCC) की आवश्यकता होगी जो C और C++ कंपाइलर प्रदान करता है।
सर्च बॉक्स में "gcc" टाइप करें और फिर पैकेज की सूची में "Devel" के बगल में छोटे प्लस साइन पर क्लिक करें। "gcc-core" और "gcc-g++" ढूंढें और प्रत्येक के लिए "Skip" पर क्लिक करें। "Skip" शब्द एक वर्जन नंबर में बदल जाएगा और "Bin?" कॉलम में "n/a" साइन एक चेक्ड बॉक्स में बदल जाएगा। सर्च बॉक्स में "make" टाइप करें और "Devel" के तहत "make" ढूंढें। इसे इंस्टॉल के लिए मार्क करने के लिए "Skip" पर क्लिक करें। "wget" सर्च करें और इसे "Web" से भी इंस्टॉल के लिए मार्क करें। नीचे दिए गए उदाहरण को बनाने के लिए, हमें "libiconv" की भी आवश्यकता होगी; इसे सर्च करें और इंस्टॉल के लिए मार्क करें।
नेक्स्ट पर क्लिक करें। इंस्टॉलर तब देखेगा कि किन अन्य पैकेजों को किसी भी निर्भरता को हल करने के लिए इंस्टॉल करने की आवश्यकता है। सिफारिशों को स्वीकार करने के लिए नेक्स्ट पर क्लिक करें।
एक बार सभी पैकेज डाउनलोड और इंस्टॉल हो जाने के बाद, इंस्टॉलर के बाहर निकलने तक अंतिम चरणों का पालन करें। लिनक्स जैसे विकास वातावरण में प्रवेश करने के लिए "Cygwin Terminal" शुरू करें। टर्मिनल में आप "dir" जैसे विंडोज कमांड्स का उपयोग नहीं करते बल्कि "ls" जैसे शेल कमांड्स का उपयोग करते हैं।
प्रदर्शन: HTML-XML यूटिल्स को कंपाइल करना
लिनक्स प्रोग्राम को विंडोज के तहत कंपाइल करने का प्रदर्शन करने के लिए, हम 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
फ़ाइलों को बिल्ड करने से पहले, आपको इस बिल्ड वातावरण के लिए उपयुक्त मेकफाइल (बिल्ड निर्देश) उत्पन्न करने के लिए "configure" शेल स्क्रिप्ट चलाने की आवश्यकता है। लिनक्स (और साइगविन) पर सोर्स से पैकेज बनाते समय यह एक सामान्य चरण है।
./configure
एक बार "configure" समाप्त हो जाने पर, आप "make" का उपयोग करके बिल्ड शुरू कर सकते हैं:
make
बिल्ड बीच में ही विफल हो जाएगा। मैं दो विचारों में था कि आगे क्या करूं। या तो मैं किसी अन्य प्रोजेक्ट पर स्विच करूं और उसे उसके सोर्स से बनाऊं, या HTML-XML-यूटिल्स के साथ संघर्ष जारी रखूं। मैंने बाद वाले को चुना क्योंकि यह दर्शाता है कि साइगविन के तहत लिनक्स प्रोग्राम्स को कंपाइल करने की कोशिश करते समय सब कुछ आसान नहीं होगा। इस विशेष समस्या का समाधान सरल है। त्रुटि संदेश दिखाता है कि लिंकर "iconv" लाइब्रेरी को खोजने में असमर्थ है। लिंक कमांड पर एक त्वरित नज़र दिखाती है कि लाइब्रेरी निर्दिष्ट नहीं है। त्वरित और गंदा समाधान कमांड को मैन्युअली चलाना और लिंकर को libiconv का उपयोग करने के लिए कहना है। इसे ठीक करने का "उचित" तरीका मेकफाइल आदि में तल्लीन करना होगा ताकि पता लगाया जा सके कि यह काम क्यों नहीं कर रहा है।
निम्न कमांड चलाएं, अंत में "-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 types.o tree.o genid.o dtd.o headers.o dict.o fopencookie.o -liconv
एक बार "hxindex.exe" फ़ाइल बन जाने पर, आप "make" फिर से टाइप करके बाकी बिल्ड के साथ जारी रख सकते हैं। "make" जिस तरह से काम करता है वह यह जांचता है कि क्या बनाया गया है और क्या नहीं, और फिर बिल्ड प्रक्रिया को उसकी सूची में अगले बाइनरी पर उचित बिंदु पर जारी रखता है। चूंकि हमने मैन्युअली "hxindex.exe" बनाया है, "make" बस अपनी सूची में अगले बाइनरी के साथ आगे बढ़ता है।
जब "make" पूरा हो जाता है, तो आपके पास html-xml-utils-6.7 डायरेक्टरी में सभी .exe फ़ाइलें होंगी।
यदि आप साइगविन का उपयोग करते हुए अटक जाते हैं तो आपको FAQ और डॉक्यूमेंटेशन को देखना चाहिए। असफल होने पर, प्रोजेक्ट की मेलिंग सूचियों का एक सेट है। यदि उपरोक्त चरणों के साथ आपको कोई समस्या है, तो कृपया नीचे कमेंट सेक्शन का उपयोग करें।