Erlang 21 - 4. How to Build Erlang/OTP on Windows

4 विंडोज पर एरलांग / ओटीपी कैसे बनाएं




erlang

4 विंडोज पर एरलांग / ओटीपी कैसे बनाएं

विषय - सूची

४.१ परिचय

यह खंड बताता है कि विंडोज पर एर्लैंग एमुलेटर और ओटीपी पुस्तकालयों का निर्माण कैसे करें। ध्यान दें कि यदि किसी के पास Microsoft के विकास उपकरण नहीं हैं और / या वह Cygwin, MSYS या MSYS2 स्थापित नहीं करना चाहता है, तो Windows बाइनरी रिलीज़ अभी भी एक पसंदीदा विकल्प है।

निर्देश विंडोज के संस्करणों पर लागू होते हैं जो साइगविन इम्यूलेटेड गनिश पर्यावरण या MSYS या MSYS2 डिट्टो का समर्थन करते हैं। हमने निम्न प्लेटफार्मों पर बनाया है: विंडोज 2012, विंडोज 7, विंडोज 8 और विंडोज 10. यह संभव है कि पुराने प्लेटफार्मों पर भी बनाया जा सके, लेकिन आप उपयुक्त Microsoft एसडीके, विजुअल स्टूडियो या ओपनएसएसएल स्थापित करने में सक्षम नहीं हो सकते हैं, किस मामले में आपको पहले के कंपाइलर्स आदि में वापस जाना होगा।

वर्णित प्रक्रिया या तो Cygwin, MSYS या MSYS2 का उपयोग एक निर्माण वातावरण के रूप में करती है। आप Cygwin / MSYS / MSYS2 में बैश शेल चलाते हैं और बिल्ड करने के लिए ग्नू मेक / कॉन्फ़िगर / ऑटोकॉन्फ़ आदि का उपयोग करते हैं। हालाँकि, एमुलेटर सी-सोर्स कोड एक मूल विंडोज बाइनरी का निर्माण करते हुए, ज्यादातर Microsoft Visual C ++ ™ के साथ संकलित किया गया है। यह वही प्रक्रिया है जिसका उपयोग हम पूर्व-निर्मित बायनेरिज़ के निर्माण के लिए करते हैं। क्यों हम वीसी ++ का उपयोग करते हैं न कि एफसीसी अनुभाग में आगे बताया गया है।

यदि आप Cygwin, MSYS, MSYS2 या यूनिक्स के वातावरण से परिचित नहीं हैं, तो आपको संभवतः उस काम पर थोड़ा पढ़ना होगा। इस बारे में बहुत सारे दस्तावेज ऑनलाइन हैं।

ये निर्देश 32-बिट और 64-बिट विंडोज दोनों के लिए लागू होते हैं। ध्यान दें कि भले ही आप Erlang के 64-बिट संस्करण का निर्माण करते हैं, लेकिन इसमें शामिल अधिकांश निर्देशिकाओं और फ़ाइलों को अभी भी win32 नाम दिया गया है। Win64 नाम की कुछ घटनाएं हालांकि मौजूद हैं। उदाहरण के लिए, Erlang के 64-बिट विंडोज संस्करण के लिए इंस्टॉलेशन फ़ाइल, otp_win64_21.exe

यदि आप पर्यावरण और निर्माण प्रणाली के साथ सहज महसूस करते हैं, और सभी आवश्यक उपकरण हैं, तो आपके पास विंडोज़ के लिए एरलांग / ओटीपी वितरण को बेहतर बनाने का एक शानदार अवसर है। कृपया हमारे JIRA और पैच को हमारे git project किसी भी सुझाव को प्रस्तुत करें ताकि उन्हें एर्लैंग के अगले संस्करण में अपना रास्ता मिल सके। यदि निर्माण प्रणाली (जैसे मेकफाइल्स आदि) में परिवर्तन कर रहे हैं, तो कृपया ध्यान रखें कि उन्हीं मेकफाइल्स का उपयोग यूनिक्स / VxWorks पर किया जाता है, ताकि आपके परिवर्तन अन्य प्लेटफार्मों को न तोड़ें। सी-कोड के लिए वह भी निश्चित रूप से जाता है; सिस्टम विशिष्ट कोड $ERL_TOP/erts/emulator/sys/win32 और $ERL_TOP/erts/etc/win32 निर्देशिका में ज्यादातर $ERL_TOP/erts/etc/win32 $ERL_TOP/erts/emulator/beam डायरेक्टरी कॉमन कोड के लिए है।

हमने कुछ रिलीज के लिए इस निर्माण प्रक्रिया का उपयोग किया है, और इसने हमारे लिए ठीक काम किया है। फिर भी, अलग-अलग मशीनों पर और अलग-अलग सेटअप के साथ सभी तरह की परेशानियाँ हो सकती हैं। जहाँ कहीं भी कठिनाइयों का सामना करना पड़ा है, हम संकेत देने की कोशिश करेंगे, लेकिन कृपया अपने अनुभवों को erlang-questions मेलिंग सूची का उपयोग करके साझा करें। हम निश्चित रूप से, सभी को उनके सभी मुद्दों के साथ मदद नहीं कर सकते, इसलिए कृपया ऐसे मुद्दों को हल करने और समाधान / समाधान प्रस्तुत करने का प्रयास करें।

चलों फिर चलते हैं! हम सेटअप प्रक्रिया के एक छोटे संस्करण के साथ शुरू करेंगे, कुछ FAQ के बाद, और फिर हम सेटअप के अधिक विवरण में जाएंगे।

4.2 लघु संस्करण

निम्नलिखित अनुभागों में, हमने आवश्यक उपकरणों की स्थापना के बारे में जितना संभव हो उतना वर्णन किया है। एक बार उपकरण स्थापित हो जाने के बाद, भवन बनाना काफी आसान है। हमने सीमित यूनिक्स अनुभव वाले लोगों के लिए इन निर्देशों को समझने का प्रयास किया है। Cygwin / MSYS / MSYS2 कुछ विंडोज उपयोगकर्ताओं के लिए एक नया वातावरण है, पर्यावरण चर आदि की सावधानीपूर्वक व्याख्या क्यों की गई थी।

हालांकि, अनुभवी और अधीर के लिए यह छोटी कहानी है:

  • प्राप्त करें और पूर्ण Cygwin (नवीनतम) स्थापित करें, MSYS के साथ MinGW को पूरा करें या MSYS2 को पूरा करें

    • विजुअल स्टूडियो 12.0 (2013) स्थापित करें

    • माइक्रोसॉफ़्ट विंडोज एसडीके 8.1 स्थापित करें

    • सन की JDK 1.6.0 या बाद में प्राप्त करें और इंस्टॉल करें

    • NSIS 2.01 या बाद में प्राप्त करें और (2.46 तक की कोशिश की और काम कर) स्थापित करें

    • स्थिर लिबास के साथ ओपनएसएसएल 0.9.8r या बाद में (1.0.2d तक की कोशिश की और काम कर) स्थापित करें, स्थापित करें।

    • Erlang स्रोत वितरण ( http://www.erlang.org/download.html ) प्राप्त करें और Cygwin / MSYS / MSYS2 के tar साथ अनपैक करें।

    • स्रोत वितरण को अनपैक करने के लिए ERL_TOP सेट करें

    • $ cd $ERL_TOP

    • PATH और अन्य पर्यावरण चर को संशोधित करें ताकि ये सभी उपकरण बैश शेल से रन करने योग्य हों। अभी भी $ERL_TOP में खड़े हैं, निम्नलिखित आदेश जारी करें (32-बिट विंडोज के लिए, पहली पंक्ति से x64 निकालें और अंतिम पंक्ति में otp_win64_21 से otp_win32_21 otp_win64_21 करें):

      $ eval `./otp_build env_win32 x64`
      $ ./otp_build autoconf
      $ ./otp_build configure
      $ ./otp_build boot -a
      $ ./otp_build release -a
      $ ./otp_build installer_win32
      $ release/win32/otp_win64_21 /S

    देखा! Start->Programs->Erlang OTP 21->Erlang ने एरलांग विंडोज शेल शुरू किया।

4.3 अक्सर पूछे जाने वाले प्रश्न

  • प्रश्न: तो, अब मैं विंडोज पर जीसीसी का उपयोग करके एरलांग का निर्माण कर सकता हूं?

    एक: नहीं, दुर्भाग्य से नहीं। आपको अभी भी Microsoft के दृश्य C ++ की आवश्यकता होगी। एक बॉर्न-शेल स्क्रिप्ट (cc.sh) विजुअल C ++ कंपाइलर को लपेटता है और इसे Cygwin वातावरण में चलाता है। एर्लैंग के निर्माण के लिए आवश्यक अन्य सभी उपकरण फ्री-वेयर / ओपन सोर्स हैं, लेकिन सी कंपाइलर नहीं। विंडोज एसडीके हालांकि एर्लांग को बनाने के लिए पर्याप्त है, आपको विजुअल सी ++ खरीदने की जरूरत नहीं है, बस एसडीके (एसडीके संस्करण 8.1 == विज़ुअल स्टूडियो 2013) डाउनलोड करें।

  • प्रश्न: आपने वीसी ++ से छुटकारा क्यों नहीं पाया है, आप ******?

    एक: ठीक है, आंशिक रूप से क्योंकि यह एक अच्छा संकलक है - वास्तव में! वास्तव में यह दृश्य C ++ के बजाय mingw का उपयोग करने के लिए देर से R11-रिलीज़ में संभव है (आप कुछ स्क्रिप्ट और निर्देशिका में इसके अवशेष देख सकते हैं)। दुर्भाग्य से विंडोज के लिए एसएमपी संस्करण के विकास ने मिंगव बिल्ड को तोड़ दिया और हमने वीसी ++ बिल्ड पर ध्यान केंद्रित करना चुना क्योंकि वीसी ++ संस्करणों में प्रदर्शन काफी बेहतर रहा है। Mingw बिल्ड संभवतः वापस आ जाएगा, लेकिन जब तक VC ++ बेहतर प्रदर्शन देता है, व्यावसायिक बिल्ड VC ++ एक होगा।

  • प्रश्न: ठीक है, आपको वीसी ++ की आवश्यकता है, लेकिन अब आपने विजुअल स्टूडियो के हाल के (और महंगे) संस्करण की मांग करना शुरू कर दिया है। क्यूं कर?

    एक: ठीक है, यह महंगा नहीं है, यह मुफ़्त है (जैसा कि मुफ्त बीयर में है)। बस Microsoft से नवीनतम विंडोज एसडीके डाउनलोड करें और इंस्टॉल करें और आपके लिए आवश्यक सभी उपकरण हैं। शामिल डिबगर (WinDbg) भी काफी प्रयोग करने योग्य है। Erlang को 64bit विंडोज में पोर्ट करते समय मैंने यही प्रयोग किया था। Microsoft कंपाइलर्स का बाद में उपयोग करने का एक अन्य कारण DLL संगतता है। अगर वीएल को पुराने वीसी ++ संस्करण के साथ संकलित किया जाता है तो डीएलएल मानक पुस्तकालय के नए संस्करण का उपयोग नहीं कर सकता है। इसलिए हमें नवीनतम स्वतंत्र रूप से उपलब्ध एसडीके और संकलक का उपयोग करने का लक्ष्य रखना चाहिए।

  • प्रश्न: क्या मैं आपके द्वारा वर्णित प्रक्रिया के साथ एक Cygwin बाइनरी का निर्माण कर सकता / सकती हूं?

    A: नहीं, परिणाम एक शुद्ध विंडोज बाइनरी होगा, और जहां तक ​​मुझे पता है, यह अभी तक एक Cygwin बाइनरी बनाना संभव नहीं है। यह निश्चित रूप से वांछनीय है, लेकिन डायनेमिक लिंकिंग (डायनेमिक एर्लैंग ड्राइवर लोडिंग) के साथ-साथ सिग्विन में टीसीपी / आईपी इम्यूलेशन के साथ अभी भी कुछ समस्याएं हैं, जो मुझे यकीन है, इसमें सुधार होगा, लेकिन अभी भी कुछ समस्याएं हैं । उन समस्याओं को ठीक करना आसान हो सकता है या कठिन हो सकता है। मेरा सुझाव है कि आप स्वयं प्रयास करें और अपना अनुभव साझा करें। यदि कोई साधारण ./configure && make पूरी तरह से विकसित सिग्विन बाइनरी का उत्पादन करेगा तो कोई भी खुश नहीं होगा।

  • प्रश्न: हाह, मैंने आपको देखा, आपने GCC का उपयोग किया, जबकि आपने कहा था कि आपने नहीं किया है!

    ए: ठीक है, मैं मानता हूं, एक फाइल साइगविन या मिनगॉव के जीसीसी का उपयोग करके संकलित की जाती है और परिणामस्वरूप ऑब्जेक्ट कोड को फिर एक छोटे सी हैक का उपयोग करके एमएस वीसी ++ संगत कॉफ़ में परिवर्तित किया जाता है। ऐसा इसलिए है क्योंकि विशेष रूप से फ़ाइल, beam_emu.c जीसीसी लेबल- beam_emu.c -वैल्यूज़ एक्सटेंशन का उपयोग करने में सक्षम होने से अत्यधिक लाभ करती है, जो एमुलेटर प्रदर्शन को 50% तक बढ़ा देता है। इसका दुर्भाग्य से (अभी तक) मतलब यह नहीं है कि जीसीसी का उपयोग करके सभी ओटीपी को संकलित किया जा सकता है। वह विशेष स्रोत कोड कुछ भी विशिष्ट प्रणाली को नहीं करता है और वास्तव में इस तथ्य को अपनाया जाता है कि इसे विंडोज पर संकलित करने के लिए जीसीसी का उपयोग किया जाता है।

  • प्रश्न: तो अब कहीं एमएस वीसी ++ प्रोजेक्ट फाइल है और मैं निफ्टी वीसी ++ जीयूआई का उपयोग करके ओटीपी का निर्माण कर सकता हूं?

    A: नहीं, कभी नहीं। प्रोजेक्ट फ़ाइलों को अद्यतित रखने की परेशानी और उन सभी चरणों को करना जो कुलपति + जीयूआई के भीतर से ओटीपी का निर्माण करते हैं, बस इसके लायक नहीं है, शायद असंभव भी। Erlang / OTP के लिए एक VC ++ प्रोजेक्ट फ़ाइल कभी नहीं होगी।

  • प्रश्न: तो यह सब कैसे काम करता है?

    A: Cygwin, MSYS या MSYS2 पर्यावरण है, जो किसी भी यूनिक्स मशीन पर पाए जाने वाले वातावरण के समान है। यह लगभग वैसा ही है जैसे आपके पास विंडोज के अंदर एक वर्चुअल यूनिक्स मशीन थी। कॉन्फ़िगर करें, कुछ मापदंडों को देखते हुए, फिर ऐसे मेकफाइल्स का निर्माण किया जाता है जो पर्यावरण के ग्नू-मेक द्वारा निर्मित सिस्टम के लिए उपयोग किए जाते हैं। अधिकांश वास्तविक संकलक आदि, हालांकि, साइगविन / एमएसवाईएस / एमएसवाईएस 2 उपकरण नहीं हैं, इसलिए हमने कुछ रैपर (बॉर्न-शेल स्क्रिप्ट) लिखे हैं, जो $ERL_TOP/etc/win32/cygwin_tools और $ERL_TOP/etc/win32/msys_tools । वे सभी देशी विंडोज टूल्स को फिट करने के लिए यूनिक्स वातावरण में मापदंडों और रूपांतरणों का रूपांतरण करते हैं। सबसे उल्लेखनीय निश्चित रूप से पथ हैं, जो Cygwin / MSYS / MSYS2 में "फॉरवर्ड स्लैश" (/) और कोई ड्राइव अक्षर के साथ यूनिक्स जैसे पथ हैं। Cygwin वातावरण में अधिकांश पथ रूपांतरणों के लिए Cygwin के विशिष्ट कमांड cygpath का उपयोग किया जाता है। अन्य उपकरणों का उपयोग तब किया जाता है (जब जरूरत होती है) संबंधित MSYS और MSYS2 वातावरण में। सौभाग्य से अधिकांश संकलक पथ विभाजक के रूप में बैकस्लैश के बजाय आगे की स्लैश स्वीकार करते हैं, लेकिन एक को अभी भी ड्राइव अक्षर आदि प्राप्त करना है, हालांकि। आवरण लिपियाँ सामान्य अर्थों में सामान्य नहीं हैं, उदाहरण के लिए, cc.sh हर संभावित gcc विकल्प को समझेगा और उसका अनुवाद करेगा और सही विकल्पों को cl.exe पास करेगा। सिद्धांत यह है कि स्क्रिप्ट काफी शक्तिशाली हैं ताकि एर्लांग / ओटीपी के निर्माण की अनुमति दी जा सके, अब और नहीं, कम नहीं। उन्हें एर्लैंग के विकास के दौरान परिवर्तनों का सामना करने के लिए एक्सटेंशन की आवश्यकता हो सकती है, और यही एक कारण है कि हमने उन्हें शेल-स्क्रिप्ट में बनाया है न कि पर्ल-स्क्रिप्ट में। हम मानते हैं कि वे उस तरीके को समझने और बदलने में आसान हैं।

    $ERL_TOP , एक स्क्रिप्ट है जिसे otp_build कहा जाता है। वह स्क्रिप्ट configure / make लिए सभी सही पैरामीटर देने की परेशानी को संभालती है और आपको Cygwin / MSYS / MSYS2 के तहत Erlang स्रोत के साथ काम करने के लिए सही वातावरण चर सेट करने में मदद करती है।

  • प्रश्न: आप साइग्विन का उपयोग करते हैं और उसकी आवश्यकता है, लेकिन तब आपने एर्गैंग को साइग्विन पर्यावरण में पोर्ट करने के लिए समय नहीं लिया है, लेकिन इसके बजाय अपनी व्यावसायिक रिलीज पर ध्यान दें, क्या यह वास्तव में नैतिक है?

    A: नहीं, वास्तव में नहीं, लेकिन इसे सही दिशा में एक कदम के रूप में देखें।

  • प्रश्न: क्या मैं कुछ ऐसा बना सकता हूं जो वाणिज्यिक रिलीज के समान दिखता है?

    एक: हाँ, हम सटीक एक ही निर्माण प्रक्रिया का उपयोग करें।

  • प्रश्न: Cygwin / MSYS / MSYS2 और अन्य उपकरणों के कौन से संस्करण का उपयोग करते हैं?

    A: Cygwin, MSYS और MSYS2 के लिए समान रूप से, हम निर्माण करते समय उपलब्ध नवीनतम रिलीज़ का उपयोग करने का प्रयास करते हैं। आपके द्वारा उपयोग किए जाने वाले संस्करण वास्तव में मायने नहीं रखते। हम अलग-अलग Cygwin / MSYS / MSYS2 रिलीज़ में पाए जाने वाले बग्स के लिए वर्कअराउंड को शामिल करने का प्रयास करते हैं। जैसे ही आप उनका सामना करेंगे, नए Cygwin / MSYS / MSYS2- संबंधित बगों के लिए वर्कअराउंड जोड़ने में मदद करें। कृपया उचित साइगविन, MSYS और / या MSYS2 डेवलपर्स को बग रिपोर्ट सबमिट करें। 21 के लिए हमने जो GCC का उपयोग किया था वह था संस्करण 4.8.1 (MinGW 32bit) और 4.8.5 (MSYS2 64bit)। हमने VC ++ 12.0 (यानी विज़ुअल स्टूडियो 2013), Sun का JDK 1.6.0_45 (32bit) और Sun का JDK 1.7.0_1 (64bit), NSIS 2.46 और Win32 OpenSSL 1.0.2d का उपयोग किया। आपको क्या चाहिए, इस पर जानकारी के लिए कृपया अगला भाग पढ़ें।

  • प्रश्न: क्या आप मुझे Cygwin / MSYS / MSYS2 में X सेटअप करने में मदद कर सकते हैं?

    A: नहीं, दुर्भाग्य से हमें Cygwin / MSYS / MSYS2 संबंधित उपयोगकर्ता समस्याओं के साथ मदद करने के लिए समय नहीं मिला है, कृपया संबंधित वेबसाइट, समाचार समूह और मेलिंग सूची पढ़ें।

4.4 उपकरण जो आपको चाहिए और उनका पर्यावरण

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

  • साइगविन, बहुत नवीनतम आमतौर पर सबसे अच्छा है। सभी विकास उपकरण और निश्चित रूप से सभी मूल डिट्टो प्राप्त करें। जार प्राप्त करने के लिए सुनिश्चित करें और यह भी सुनिश्चित करें कि Cygwin'ish जावा स्थापित करें, क्योंकि Cygwin जार कमांड का उपयोग किया जाता है, लेकिन Sun का जावा कंपाइलर और वर्चुअल मशीन।

    यदि आप एक 64 बिट विंडोज संस्करण का निर्माण करने जा रहे हैं, तो आपको सिग्विन के साथ मिनगॉव के 64 बिट जीसीसी को स्थापित करना सुनिश्चित करना चाहिए। यह विकास पैकेजों में से एक है।

    URL: http://www.cygwin.com

    वेबसाइट से इंस्टॉलर प्राप्त करें और इसे सिगविन स्थापित करने के लिए उपयोग करें। निष्पक्ष विशेषाधिकार होना सुनिश्चित करें। यदि आप एक NT डोमेन पर हैं, तो आपको उपयोगकर्ता डेटाबेस को सही करने के लिए स्थापना के बाद mkpasswd -d और mkgroup -d चलाने पर विचार करना चाहिए। उनके संबंधित मैनुअल पेज देखें।

    जब आप अपना पहला बैश शेल शुरू करते हैं, तो आपको एक भयानक संकेत मिलेगा। आपके पास एक PATH वातावरण चर भी हो सकता है जिसमें backslashes और ऐसा है। निष्पक्ष संकेत और एक सही पथ सेट करने के लिए $HOME/.profile और $HOME/.bashrc संपादित करें। इसके अलावा एक export SHELL को .profile । कुछ गैर-स्पष्ट कारणों के लिए पर्यावरण चर $SHELL को बैश में निर्यात नहीं किया जाता है। यह भी ध्यान दें कि उप-गोले बनाए जाने पर लॉगिन समय और .bashrc पर .profile चलाया जाता है। आपको स्पष्ट रूप से स्रोत .bashrc से इसकी आवश्यकता होगी। यदि आप चाहते हैं कि वहां कमांड्स लॉगिन समय पर चलें (जैसे एलियास, शेल फ़ंक्शंस और इसी तरह स्थापित करना)। आप उदाहरण के लिए .profile के अंत में ऐसा कर सकते हैं:

    ENV=$HOME/.bashrc
    export ENV
    . $ENV

    आप X-windows (XFree86) को सेटअप करना भी चाह सकते हैं। यह कमांड प्रॉम्प्ट से रनिंग स्टार्ट जितना आसान हो सकता है और यह बहुत कठिन भी हो सकता है। सहायता प्राप्त करने के लिए Google का उपयोग करें।

    यदि आप X-windows का उपयोग नहीं करते हैं, तो आप कंसोल सिस्टम मेनू (विंडो के ऊपरी बाएं कोने, टाइटल बार में Cygwin आइकन) में गुणों का चयन करके Windows कंसोल विंडो को सेटअप करना चाह सकते हैं। विशेष रूप से एक बड़ी स्क्रीन बफर आकार (लाइनें) सेट करना उपयोगी है क्योंकि यह आपको एक स्क्रॉलबार प्राप्त करता है ताकि आप जो भी त्रुटि संदेश दिखाई दे सकें।

    कुछ अन्य गोले उपलब्ध हैं, लेकिन नीचे दिए गए सभी उदाहरणों में हम मानते हैं कि आप बैश का उपयोग करते हैं।

  • वैकल्पिक रूप से आप MinGW और MSYS डाउनलोड करें। आपको नवीनतम इंस्टॉलर मिलेगा:

    URL: http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

    बुनियादी देव उपकरण स्थापित करना सुनिश्चित करें, लेकिन मिनगव ऑटोकॉन्फ़ से बचें और इसके बजाय एमएसआईएस को स्थापित करें।

    64bit VM बनाने में सक्षम होने के लिए, आपको 64bit MinGW कंपाइलर की भी आवश्यकता होगी:

    URL: http://sourceforge.net/projects/mingw-w64/files/latest/download?source=files

    हमने 1.0 तक कोशिश की है, लेकिन नवीनतम संस्करण को करना चाहिए। सुनिश्चित करें कि आप mingw-w64-bin_i686-mingw_<something>.zip , न कि लिनक्स संस्करण। आप अपने MinGW इंस्टालेशन ( c:\MinGW ) के शीर्ष पर पैकेज को अनज़िप करें और यही है।

  • तीसरा विकल्प MSYS2 को डाउनलोड और इंस्टॉल करना है:

    URL: https://msys2.github.io/

    जब आपने वहां निर्देशों का पालन किया है, तो आपको इन पैकेजों को स्थापित करने की भी आवश्यकता है: ऑटोकॉन्फ़, मेक, पर्ल और टार। आप msys कंसोल में निम्न चलाकर ऐसा करते हैं:

    pacman -S msys/autoconf msys/make msys/perl msys/tar 

    आपको एक gcc की भी आवश्यकता है। यदि आप 64 बिट MSYS2 स्थापित करते हैं जो आप चलाते हैं:

    mingw64/mingw-w64-x86_64-gcc

    और 32 बिट MSYS2 के लिए:

    pacman -S mingw32/mingw-w64-i686-gcc
    pacman -S mingw-w64-i686-editrights
  • विजुअल स्टूडियो 2013 (विजुअल स्टूडियो 12.0)। वेब इंस्टॉलर को यहां से डाउनलोड करें और चलाएं:

    https://www.visualstudio.com/
  • माइक्रोसॉफ़्ट विंडोज एसडीके संस्करण 8.1 (वीसी ++ 12.0 और विज़ुअल स्टूडियो 2013 के अनुरूप)। आप इसे यहाँ पाएँगे:

    URL: https://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx

  • वातावरण को सेट करने में मदद करने के लिए, एक बैट फ़ाइल है, %PROGRAMFILES%\Mirosoft Visual Studio 12.0\VC\vcvarsall.bat , जो Windows कमांड प्रॉम्प्ट के लिए उपयुक्त वातावरण सेट करता है। यह बैश के लिए उपयुक्त नहीं है, इसलिए आपको अपने .bash_profile को संपादित करके इसे बैश शैली के वातावरण में बदलना होगा। मेरे मामले में, जहां SDK डिफ़ॉल्ट निर्देशिका में स्थापित है और %PROGRAMFILES% C:\Program Files , 32bit बिल्ड वातावरण (64 बिट या 32 बिट मशीन पर) सेट करने के लिए आदेश इस तरह दिखते हैं (Cyvwin में):

    # Some common paths
    C_DRV=/cygdrive/c
    PRG_FLS=$C_DRV/Program\ Files
    
    # nsis
    NSIS_BIN=$PRG_FLS/NSIS
    # java
    JAVA_BIN=$PROGRAMFILES/Java/jdk1.7.0_02/bin
    
    ##
    ## MS SDK
    ##
    
    CYGWIN=nowinsymlinks 
    
    VISUAL_STUDIO_ROOT=$PRG_FLS/Microsoft\ Visual\ Studio\ 12.0
    WIN_VISUAL_STUDIO_ROOT="C:\\Program Files\\Microsoft Visual Studio 12.0"
    SDK=$PRG_FLS/Windows\ Kits/8.1
    WIN_SDK="C:\\Program Files\\Windows Kits\\8.1"
    
    PATH="$NSIS_BIN:\
    $VISUAL_STUDIO_ROOT/VC/bin:\
    $VISUAL_STUDIO_ROOT/VC/vcpackages:\
    $VISUAL_STUDIO_ROOT/Common7/IDE:\
    $VISUAL_STUDIO_ROOT/Common7/Tools:\
    $SDK/bin/x86
    /usr/local/bin:/usr/bin:/bin:\
    /cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:\
    /cygdrive/c/WINDOWS/system32/Wbem:\
    $JAVA_BIN"
    
    LIBPATH="$WIN_VISUAL_STUDIO_ROOT\\VC\\lib"
    
    LIB="$WIN_VISUAL_STUDIO_ROOT\\VC\\lib\\;$WIN_SDK\\lib\\winv6.3\\um\\x86"
    
    INCLUDE="$WIN_VISUAL_STUDIO_ROOT\\VC\\include\\;$WIN_SDK\\include\\shared\\;\
    $WIN_SDK\\include\\um;$WIN_SDK\\include\\winrt\\;$WIN_SDK\\include\\um\\gl"
    
    export CYGWIN PATH LIBPATH LIB INCLUDE

    यदि आप इसके बजाय MinGW के MSYS का उपयोग कर रहे हैं, तो आपको C_DRV सेटिंग को बदलना होगा, जो C_DRV :

    C_DRV=/c

    और आपको पाथ पर्यावरण चर को भी बदलने की जरूरत है:

    MINGW_BIN=/c/MinGW/bin
    
    
    PATH="$NSIS_BIN:\
    $VISUAL_STUDIO_ROOT/VC/bin:\
    $VISUAL_STUDIO_ROOT/VC/vcpackages:\
    $VISUAL_STUDIO_ROOT/Common7/IDE:\
    $VISUAL_STUDIO_ROOT/Common7/Tools:\
    $SDK/bin/x86:/usr/local/bin:\
    $MINGW_BIN:\
    /bin:/c/Windows/system32:/c/Windows:\
    /c/Windows/System32/Wbem:\
    $JAVA_BIN"

    MSYS2 के लिए आप MSYS की तरह ही C_DRV और PATH का उपयोग करें, केवल MINGW_BIN अपडेट करें:

    MINGW_BIN=/mingw32/bin

    यदि आप Erlang का 64 बिट संस्करण बना रहे हैं, तो आपको PATHs आदि को थोड़ा अलग तरीके से सेट करना चाहिए। हमारे पास Cygwin और MSYS दोनों में काम करने के लिए दो टेम्पलेट हैं लेकिन MSYS2 के साथ काम करने के लिए संपादन की आवश्यकता है (स्क्रिप्ट में टिप्पणी देखें)। निम्नलिखित एक 32 बिट्स के लिए है:

    make_winpath()
    { 
        P=$1
        if [ "$IN_CYGWIN" = "true" ]; then
            cygpath -d "$P"
        else
            (cd "$P" && /bin/cmd //C "for %i in (".") do @echo %~fsi")
        fi
    }
    
    make_upath()
    {
        P=$1
        if [ "$IN_CYGWIN" = "true" ]; then
            cygpath "$P"
        else
            echo "$P" | /bin/sed 's,^\([a-zA-Z]\):\\,/\L\1/,;s,\\,/,g'
        fi
    }
    
    # Some common paths
    if [ -x /usr/bin/msys-?.0.dll ]; then
      # Without this the path conversion won't work
      COMSPEC='C:\Windows\System32\cmd.exe'
      MSYSTEM=MINGW32  # Comment out this line if in MSYS2
      export MSYSTEM COMSPEC
      # For MSYS2: Change /mingw/bin to the msys bin dir on the line below
      PATH=/usr/local/bin:/mingw/bin:/bin:/c/Windows/system32:\
      /c/Windows:/c/Windows/System32/Wbem
      C_DRV=/c
      IN_CYGWIN=false
    else
      PATH=/ldisk/overrides:/usr/local/bin:/usr/bin:/bin:\
      /usr/X11R6/bin:/cygdrive/c/windows/system32:\
      /cygdrive/c/windows:/cygdrive/c/windows/system32/Wbem
      C_DRV=/cygdrive/c
      IN_CYGWIN=true
    fi
    
    obe_otp_gcc_vsn_map="
        .*=>default 
    "   
    obe_otp_64_gcc_vsn_map="
        .*=>default
    "
    # Program Files 
    PRG_FLS=$C_DRV/Program\ Files
    
    # Visual Studio
    VISUAL_STUDIO_ROOT=$PRG_FLS/Microsoft\ Visual\ Studio\ 12.0
    WIN_VISUAL_STUDIO_ROOT="C:\\Program Files\\Microsoft Visual Studio 12.0"
    
    # SDK
    SDK=$PRG_FLS/Windows\ Kits/8.1
    WIN_SDK="C:\\Program Files\\Windows Kits\\8.1"
    
    # NSIS
    NSIS_BIN=$PROGRAMFILES/NSIS
    
    # Java 
    JAVA_BIN=$PROGRAMFILES/Java/jdk1.7.0_02/bin
    
    ## The PATH variable should be Cygwin'ish
    VCPATH=
    $VISUAL_STUDIO_ROOT/VC/bin:\
    $VISUAL_STUDIO_ROOT/VC/vcpackages:\
    $VISUAL_STUDIO_ROOT/Common7/IDE:\
    $VISUAL_STUDIO_ROOT/Common7/Tools:\
    $SDK/bin/x86
    
    ## Microsoft SDK libs
    LIBPATH=$WIN_VISUAL_STUDIO_ROOT\\VC\\lib
    
    LIB=$WIN_VISUAL_STUDIO_ROOT\\VC\\lib\\;$WIN_KITS\\lib\\winv6.3\\um\\x86
    
    INCLUDE=$WIN_VISUAL_STUDIO_ROOT\\VC\\include\\;\
    $WIN_KITS\\include\\shared\\;$WIN_KITS\\include\\um;\
    $WIN_KITS\\include\\winrt\\;$WIN_KITS\\include\\um\\gl
    
    # Put nsis, c compiler and java in path
    export PATH=$VCPATH:$PATH:$JAVA_BIN:$NSIS_BIN
    
    # Make sure LIB and INCLUDE is available for others
    export LIBPATH LIB INCLUDE

    64 बिट टेम्पलेट का पहला हिस्सा 32 बिट के समान है, लेकिन कुछ पर्यावरण चर अंतर हैं:

    # Program Files
    PRG_FLS64=$C_DRV/Program\ Files
    PRG_FLS32=$C_DRV/Program\ Files\ \(x86\)
    
    # Visual Studio
    VISUAL_STUDIO_ROOT=$PRG_FLS32/Microsoft\ Visual\ Studio\ 12.0
    WIN_VISUAL_STUDIO_ROOT="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0"
    
    # SDK
    SDK=$PRG_FLS32/Windows\ Kits/8.1
    WIN_SDK="C:\\Program Files (x86)\\Windows Kits\\8.1"
    
    # NSIS
    NSIS_BIN=$PROGRAMFILES/NSIS
    # Java 
    JAVA_BIN=$PROGRAMFILES/Java/jdk1.7.0_02/bin
    
    ## The PATH variable should be Cygwin'ish
    VCPATH=
    $VISUAL_STUDIO_ROOT/VC/bin/amd64:\
    $VISUAL_STUDIO_ROOT/VC/vcpackages:\
    $VISUAL_STUDIO_ROOT/Common7/IDE:\
    $VISUAL_STUDIO_ROOT/Common7/Tools:\
    $SDK/bin/x86
    
    ## Microsoft SDK libs
    LIBPATH=$WIN_VISUAL_STUDIO_ROOT\\VC\\lib\\amd64
    
    LIB=$WIN_VISUAL_STUDIO_ROOT\\VC\\lib\\amd64\\;\
    $WIN_KITS\\lib\\winv6.3\\um\\x64
    
    INCLUDE=$WIN_VISUAL_STUDIO_ROOT\\VC\\include\\;\
    $WIN_KITS\\include\\shared\\;$WIN_KITS\\include\\um;\
    $WIN_KITS\\include\\winrt\\;$WIN_KITS\\include\\um\\gl
    
    # Put nsis, c compiler and java in path
    export PATH=$VCPATH:$PATH:$JAVA_BIN:$NSIS_BIN
    
    # Make sure LIB and INCLUDE is available for others
    export LIBPATH LIB INCLUDE

    PATH को सेट करना सुनिश्चित करें ताकि NSIS और Microsoft SDK MSYS / Cygwin टूल से पहले मिल जाए और यह कि PATH में अंतिम हो।

    एक साधारण हैलो वर्ल्ड बनाएं और इसे bash के भीतर से cl कमांड से संकलित करने का प्रयास करें। यदि वह काम नहीं करता है, तो आपके पर्यावरण को फिक्सिंग की आवश्यकता है। याद रखें, सिग्विन बैश में आपके पथ पर्यावरण चर में कोई बैकस्लैश नहीं होना चाहिए, लेकिन LIB और INCLUDE में अर्धविराम, ड्राइव अक्षर और बैकस्लैश के साथ Windows शैली पथ होना चाहिए।

  • सन के जावा JDK 1.6.0 या बाद का। हमारा जावा कोड (jinterface, ic) JDK 1.6.0 के लिए लिखा गया है। इसे विंडोज के लिए प्राप्त करें और इसे स्थापित करें, जेआरई पर्याप्त नहीं है। यदि आपको जावा की परवाह नहीं है, तो आप इस चरण को छोड़ सकते हैं। नतीजा यह होगा कि जेंथफेस नहीं बनाया गया है।

    URL: http://java.sun.com

    अपने रास्ते में अपने रास्ते के वातावरण में javac LAST जोड़ें, मेरे मामले में इसका मतलब है:

    `PATH="$PATH:/cygdrive/c/Program Files/Java/jdk1.7.0_02/bin"`

    कोई CLASSPATH या किसी चीज की जरूरत नहीं है। बैश प्रॉम्प्ट में javac टाइप करें और आपको उपलब्ध जावा विकल्पों की एक सूची मिलनी चाहिए। सुनिश्चित करें, जैसे type java , कि आप स्थापित जावा का उपयोग करें। ध्यान दें कि Cygwin / MinGW / MSYS2 के jar.exe का उपयोग किया जाता है। इसीलिए JDK बिन-डायरेक्टरी को PATH में अंतिम रूप से जोड़ा जाना चाहिए।

  • Nullsoft NSIS इंस्टॉलर प्रणाली। सेल्फ इंस्टॉलिंग पैकेज बनाने के लिए आपको इसकी आवश्यकता है। यह एक फ्री ओपन सोर्स इंस्टॉलर है जो कमर्शियल वाइज और इंस्टाल शील्ड इंस्टालर की तुलना में बहुत अच्छे है। यह वह इंस्टॉलर है जिसका उपयोग हम व्यावसायिक रिलीज़ के लिए भी करते हैं।

    URL: http://nsis.sourceforge.net/download

    बहुत से, विशेष रूप से आधुनिक यूजर इंटरफेस घटकों को स्थापित करें, क्योंकि यह निश्चित रूप से आवश्यक है। मेरे मामले में अपने रास्ते में makensis रखो:

    PATH=/cygdrive/c/Program\ Files/NSIS:$PATH

    बैश प्रॉम्प्ट पर makensis टाइप करें और यदि सब कुछ ठीक है, तो आपको विकल्पों की एक सूची मिलनी चाहिए।

  • OpenSSL। यदि आप SSL और क्रिप्टो अनुप्रयोगों को संकलित करना (और चलाना) चाहते हैं तो यह है। प्रीबिल्ट बायनेरिज़ हैं, जिन्हें आप बस डाउनलोड और इंस्टॉल कर सकते हैं, यहाँ उपलब्ध हैं:

    URL: http://openssl.org/community/binaries.html

    हम 1.0.2d का उपयोग करने की सलाह देंगे।

  • WxWidgets के साथ बिल्डिंग। डाउनलोड wxWidgets-3.0.3 या उच्चतर।

    इसे स्थापित करें या इसे pgm फ़ोल्डर में अनपैक करें: Cygwin: DRIVE:/PATH/cygwin/opt/local/pgm MSYS: DRIVE:/PATH/MinGW/msys/1.0/opt/local/pgm MSYS2: DRIVE:/PATH/msys<32/64>/opt/local/pgm

    यदि wxUSE_POSTSCRIPT <path\to\pgm>\wxMSW-3.0.3\include\wx\msw\setup.h सक्षम नहीं है, तो <path\to\pgm>\wxMSW-3.0.3\include\wx\msw\setup.h , इसे सक्षम करें।

    बिल्ड: उपलब्ध वीसी टूल्स के साथ कमांड प्रॉम्प्ट से (ओपन कमांड के लिए निर्देश देखें, RAILASE मोड में उचित कमांड प्रॉम्प्ट शुरू करने में मदद के लिए ऊपर):

    C:\...\> cd <path\to\pgm>\wxMSW-3.0.3\build\msw
    C:\...\> nmake BUILD=release SHARED=0 DIR_SUFFIX_CPU= -f makefile.vc

    या - यदि 64 बिट संस्करण का निर्माण हो रहा है:

    C:\...\> cd <path\to\pgm>\wxMSW-3.0.3\build\msw
    C:\...\> nmake TARGET_CPU=amd64 BUILD=release SHARED=0 DIR_SUFFIX_CPU= -f makefile.vc
  • Erlang स्रोत वितरण ( http://www.erlang.org/download.html ) प्राप्त करें। यूनिक्स प्लेटफार्मों के लिए भी ऐसा ही है। अधिमानतः स्रोत tar.gz ( tar zxf otp_src_21.tar.gz ) को अनपैक करने के लिए Cygwin, MSYS या MSYS2 के भीतर टार का उपयोग करें।

    स्रोत वितरण की मूल निर्देशिका को इंगित करने के लिए पर्यावरण ERL_TOP सेट करें। मान लीजिए कि मैं $HOME/src और unpacked otp_src_21.tar.gz में खड़ा था, मैं इसके बाद .profile जोड़ें:

    ERL_TOP=$HOME/src/otp_src_21
    export $ERL_TOP

4.5 शैल पर्यावरण

इसलिए, यदि आपने उपरोक्त निर्देशों का पालन किया है, जब आप बैश शेल शुरू करते हैं, तो आपके पास एक INCLUDE वातावरण होना चाहिए जिसमें Windows शैली पथ, एक LIB परिवेश चर भी Windows शैली में हो, और अंत में एक PATH कि चलो आप तक पहुँचते हैं cl, makisis javac आदि कमांड प्रॉम्प्ट से ( which cl bash से सत्यापित करने के लिए which cl आदि का उपयोग करें)।

आपके पास एक ERL_TOP पर्यावरण वैरिएबल भी होना चाहिए जो कि Cygwin शैली है , और एक निर्देशिका है जो अन्य फ़ाइलों के बीच, स्क्रिप्ट otp_build

पर्यावरण की एक अंतिम मालिश की आवश्यकता है, और यह स्क्रिप्ट $ERL_TOP/otp_build द्वारा किया जाता है। बैश करना शुरू करें और निम्न कार्य करें, "बैक-टिक्स" (`) पर ध्यान दें, कुछ कीबोर्ड पर प्राप्त करना काफी कठिन हो सकता है, लेकिन स्पेस बार द्वारा पीछा की जाने वाली बैक-टिक कुंजी को दबा सकते हैं ...

$ cd $ERL_TOP
$ eval `./otp_build env_win32`

यदि आप अपने कीबोर्ड पर बैक-टिक का उत्पादन करने में असमर्थ हैं, तो आप ksh संस्करण का उपयोग कर सकते हैं:

$ cd $ERL_TOP
$ eval $(./otp_build env_win32)

यदि आप 64 बिट संस्करण बना रहे हैं, तो आप आर्किटेक्चर पैरामीटर के साथ otp_build आपूर्ति otp_build :

$ cd $ERL_TOP
$ eval `./otp_build env_win32 x64`

यह पर्यावरण के लिए अंतिम स्पर्श करना चाहिए और इसके बाद निर्माण आसान होना चाहिए। आप केवल यह देखने के लिए eval बिना ./otp_build env_win32 चला सकते हैं, और यह देखते हैं कि यह जो वातावरण सेट करता है वह ठीक लगता है। यदि संभव हो तो रास्ते को रिक्त स्थान से साफ किया जाता है (इसके बजाय डॉस शैली के छोटे नामों का उपयोग करके), चर OVERRIDE_TARGET , CC , CXX , AR और RANLIB को उनके संबंधित रैपर और निर्देशिकाओं को $ERL_TOP/erts/etc/win32/<cygwin/msys>_tools/vc और $ERL_TOP/erts/etc/win32/<cygwin/msys>_tool को PATH में पहले जोड़ा जाता है।

अब आप जांच सकते हैं कि आपके शेल में type erlc लिखकर आपके पास कौन सा erlc है। इसे $ERL_TOP/erts/etc/win32/cygwin_tools या $ERL_TOP/erts/etc/win32/msys_tools

4.6 भवन और स्थापना

otp_build स्क्रिप्ट का उपयोग करके बिल्डिंग बनाना सबसे आसान है:

$ ./otp_build autoconf # Ignore the warning blob about versions of autoconf
$ ./otp_build configure <optional configure options>
$ ./otp_build boot -a
$ ./otp_build release -a <installation directory>
$ ./otp_build installer_win32 <installation directory> # optional

अब आपके पास <installation directory> , यानी $ERL_TOP/release/win32 में otp_win32_21.exe या otp_win64_21.exe नामक एक फ़ाइल होगी।

अधिक विस्तार में जाने की सुविधा देता है:

  • $ ./otp_build autoconf - यह कदम आपके वातावरण में सही ढंग से काम करने के लिए कॉन्फ़िगर स्क्रिप्ट का पुनर्निर्माण करता है। एक आदर्श दुनिया में, इसकी आवश्यकता नहीं होगी, लेकिन अफसोस, हमने वर्षों में हमारी वितरित कॉन्फ़िगर स्क्रिप्ट (लिनक्स प्लेटफॉर्म पर उत्पन्न) और Cygwin / MSYS / MSYS2 पर्यावरण के बीच कई असंगतताओं का सामना किया है। साइगविन / एमएसवाईएस / एमएसवाईएस 2 में ऑटोकॉनफ चलाना यह सुनिश्चित करता है कि कॉन्फ़िगर स्क्रिप्ट संगत तरीके से उत्पन्न होती है और अगले चरण में वे अच्छी तरह से काम करेंगे।

  • $ ./otp_build configure - यह नव निर्मित कॉन्फ़िगर स्क्रिप्ट चलाता है जिसमें कॉन्फ़िगर करने वाले विकल्पों के साथ अच्छी तरह से व्यवहार होता है। लक्ष्य मशीन का प्रकार स्पष्ट रूप से win32 , इसलिए बहुत से कॉन्फ़िगर-स्क्रिप्ट इस अजीब लक्ष्य नाम को पहचानते हैं और तदनुसार व्यवहार करते हैं। CC वैरिएबल कंपाइलर को cc.sh भी बनाता है, जो MSVC ++ को लपेटता है, इसलिए C कंपाइलर के संबंध में सभी कॉन्फ़िगर परीक्षण सही कंपाइलर चलाने के लिए हो जाते हैं। विंडोज पर बहुत सारे परीक्षणों की आवश्यकता नहीं है, लेकिन हमने वैसे भी पूरे कॉन्फ़िगर को चलाने के लिए सबसे अच्छा सोचा।

  • $ ./otp_build boot -a - यह बूटस्ट्रैप निर्देशिका (स्रोत, $ERL_TOP/bootstrap साथ भेज) का उपयोग करता है एक पूर्ण OTP सिस्टम बनाने के लिए। जब यह किया जाता है तो आप स्रोत पेड़ के भीतर से एरेल चला सकते हैं; केवल $ERL_TOP/bin/erl टाइप करें और आपके पास प्रॉम्प्ट है।

  • $ ./otp_build release -a - स्रोत ट्री से व्यावसायिक रिलीज़ ट्री बनाता है। डिफ़ॉल्ट को $ERL_TOP/release/win32 में रखना है। आप किसी भी निर्देशिका को पैरामीटर (साइगविन शैली) के रूप में दे सकते हैं, लेकिन यह वास्तव में मायने नहीं रखता है यदि आप स्वयं निकालने वाला इंस्टॉलर भी बनाने जा रहे हैं।

  • $ ./otp_build installer_win32 - सेल्फ एक्सट्रैक्टिंग इंस्टॉलर को निष्पादन योग्य बनाता है। निष्पादन योग्य otp_win32_21.exe या otp_win64_21.exe पिछले चरण में बनाई गई रिलीज़ की शीर्ष निर्देशिका में रखा जाएगा। यदि कोई रिलीज़ निर्देशिका निर्दिष्ट नहीं है, तो रिलीज़ को $ERL_TOP/release/win32 लिए बनाया गया है, जो कि वह स्थान भी होगा जहां इंस्टॉलर निष्पादन योग्य रखा जाएगा। यदि आपने रिलीज़ के लिए कुछ अन्य निर्देशिका निर्दिष्ट की है (जैसे ./otp_build release -a /tmp/erl_release ), तो आपको यहाँ वही पैरामीटर देने की उम्मीद है, (यानी ./otp_build installer_win32 /tmp/erl_release )। इस काम के लिए आपको अपने पथ में एक पूर्ण NSIS इंस्टॉलेशन और makensis.exe रखना होगा। एक बार जब आप इंस्टॉलर बना लेते हैं, तो आप इसे नियमित रूप से एर्लांग / ओटीपी स्थापित करने के लिए चला सकते हैं, बस निष्पादन योग्य चलाएं और इंस्टॉलेशन विज़ार्ड में चरणों का पालन करें। किसी भी प्रश्न के बिना स्थापना में सभी डिफ़ॉल्ट सेटिंग्स प्राप्त करने के लिए, आप निष्पादन योग्य को पैरामीटर /S (राजधानी एस) के साथ चलाते हैं जैसे:

    $ cd $ERL_TOP
    $ release/win32/otp_win32_21 /S
    ...

    या

    $ cd $ERL_TOP
    $ release/win32/otp_win64_21 /S
    ...

    और थोड़ी देर बाद Erlang / OTP-21 को C:\Program Files\erl10.0\ , में मेनू आदि में शॉर्टकट के साथ स्थापित किया जाएगा।

4.7 विकास

एक बार सिस्टम बन जाने के बाद, आप इसे बदलना चाह सकते हैं। कुछ अच्छी डायरेक्टरी में टेस्ट रिलीज़ करना उपयोगी हो सकता है, लेकिन आप स्रोत पेड़ के भीतर से एर्लैंग भी चला सकते हैं। लक्ष्य local_setup , प्रोग्राम को $ERL_TOP/bin/erl.exe प्रयोग करने योग्य $ERL_TOP/bin/erl.exe है और यह स्रोत ट्री में सभी OTP लाइब्रेरीज़ का भी उपयोग करता है।

यदि आप एमुलेटर को हैक करते हैं, तो आप $ERL_TOP/erts/emulator में खड़े होकर एमुलेटर को निष्पादन योग्य बना सकते हैं और एक साधारण कार्य कर सकते हैं

$ make opt

ध्यान दें कि आपको विंडोज पर कुछ भी बनाने से पहले विशेष शेल में (cd $ERL_TOP && eval `./otp_build env_win32`) । मेक अप करने के बाद आप $ERL_TOP/bin/erl चलाकर अपने परिणाम का परीक्षण कर सकते हैं। यदि आप परिणाम को एक रिलीज़ डायरेक्टरी (कहना /tmp/erl_release ) पर कॉपी करना चाहते हैं, तो आप ऐसा करते हैं (अभी भी $ERL_TOP/erts/emulator )

$ make TESTROOT=/tmp/erl_release release

वह एमुलेटर एक्जीक्यूटिव्स को कॉपी करेगा।

एमुलेटर का डिबग बिल्ड बनाने के लिए, आपको दोनों beam.dll (वास्तविक रनटाइम सिस्टम) और erlexec.dll को फिर से erlexec.dll । इसे अवश्य पसंद करें

$ cd $ERL_TOP
$ rm bin/win32/erlexec.dll
$ cd erts/emulator
$ make debug
$ cd ../etc
$ make debug

और कभी - कभी

$ cd $ERL_TOP
$ make local_setup

इसलिए अब जब आप $ERL_TOP/erl.exe , तो आपके पास एक डीबग संकलित एमुलेटर होना चाहिए, जिसे आप देखेंगे कि आप क्या करते हैं:

1> erlang:system_info(system_version).

एर्गेल शेल में। यदि लौटे स्ट्रिंग में [debug] , तो आपको डीबग संकलित एमुलेटर मिला है।

इरलांग पुस्तकालयों को हैक करने के लिए, आप बस विशिष्ट "एप्लिकेशन" निर्देशिका में एक make opt , जैसे:

$ cd $ERL_TOP/lib/stdlib
$ make opt

या स्रोत निर्देशिका में भी ...

$ cd $ERL_TOP/lib/stdlib/src
$ make opt

ध्यान दें कि ऐसा करते समय आपको अपने रास्ते में नए सिरे से एर्लांग होने की उम्मीद है, जो आपके द्वारा पिछले चरणों में बनाए गए सादे 21 हैं। विशिष्ट पुस्तकालयों के पुनर्निर्माण से पहले आप अपने PATH $ERL_TOP/bootstrap/bin भी जोड़ सकते हैं। यह आपको किसी भी OTP erlang कोड को संकलित करने के लिए एक अच्छा पर्याप्त Erlang सिस्टम देगा। रास्ता सही ढंग से स्थापित करना थोड़ा मुश्किल है। आपको अभी भी रास्ते में वास्तविक एमुलेटर से पहले $ERL_TOP/erts/etc/win32/cygwin_tools/vc और $ERL_TOP/erts/etc/win32/cygwin_tools होने चाहिए । बूटस्ट्रैप संकलक का उपयोग करने के लिए पथ की एक विशिष्ट सेटिंग होगी:

$ export PATH=$ERL_TOP/erts/etc/win32/cygwin_tools/vc\
:$ERL_TOP/erts/etc/win32/cygwin_tools:$ERL_TOP/bootstrap/bin:$PATH

यह किसी भी पुस्तकालय को बिना परेशानी के पुनर्निर्माण करना संभव बनाता है ...

यदि आप एक लाइब्रेरी (एक एप्लिकेशन) को एक नए, एक रिलीज क्षेत्र में कॉपी करना चाहते हैं, तो आप एमुलेटर के साथ पसंद करते हैं:

$ cd $ERL_TOP/lib/stdlib
$ make TESTROOT=/tmp/erlang_release release

उसे याद रखो:

  • विंडोज विशिष्ट सी-कोड में चला जाता है $ERL_TOP/erts/emulator/sys/win32 , $ERL_TOP/erts/emulator/drivers/win32 या $ERL_TOP/erts/etc/win32

  • विंडोज विशिष्ट एरलैंग कोड को सशर्त रूप से उपयोग किया जाना चाहिए और होस्ट ओएस रनटाइम में परीक्षण किया जाना चाहिए, बिल्कुल उसी बीम फ़ाइलों को हर प्लेटफॉर्म के लिए वितरित किया जाना चाहिए! तो कोड लिखें जैसे:

    case os:type() of
        {win32,_} ->
            do_windows_specific();
        Other ->
            do_fallback_or_exit()
    end,

यह मूल रूप से आप सभी को मिल रहा है।

4.8 जीआईटी का उपयोग करना

आप GitHUB से स्रोत कोड के संस्करणों को देखना चाहते हैं। यह सीधे Cygwin में संभव है, लेकिन MSYS में नहीं। एक परियोजना है MsysGIT:

यूआरएल: http://code.google.com/p/msysgit/

यह एक अच्छा Git पोर्ट बनाता है। MsysGIT से मिलने वाला msys प्रॉम्प्ट हालांकि MinGW के पूर्ण संस्करण के साथ संगत नहीं है, इसलिए आपको MsysGIT के कमांड प्रॉम्प्ट का उपयोग करके फ़ाइलों की जांच करनी होगी और फिर बिल्डिंग के लिए एक सामान्य MSYS कमांड प्रॉम्प्ट पर स्विच करना होगा। इसके अलावा सभी परीक्षण सूटों का निर्माण नहीं किया जा सकता क्योंकि MsysGIT / MSYS प्रतीकात्मक लिंक को संभालता नहीं है।

Original text