Erlang 21 - 2. Building and Installing Erlang/OTP

2 भवन और स्थापना Erlang / OTP




erlang

2 भवन और स्थापना Erlang / OTP

२.१ परिचय

इस दस्तावेज़ में इरलांग / ओटीपी -21 का निर्माण और स्थापित करने का तरीका बताया गया है। किसी भी यूनिक्स / लिनक्स सिस्टम पर स्रोत से इरलैंग / ओटीपी का निर्माण संभव होना चाहिए, जिसमें ओएस एक्स भी शामिल है। आपको एरलांग / ओटीपी बनाने और स्थापित करने का प्रयास करने से पहले पूरे दस्तावेज को पढ़ने की सलाह दी जाती है।

स्रोत कोड को Erlang / OTP या GitHub की आधिकारिक साइट से डाउनलोड किया जा सकता है।

2.2 आवश्यक उपयोगिताएँ

ये ऐसे उपकरण हैं, जिन्हें आपको Erlang / OTP को अनपैक करने और बनाने के लिए आवश्यक है।

अनपैक

  • ग्नू अनज़िप या एक आधुनिक अनकंप्रेस।
  • एक TAR कार्यक्रम जो लंबे फ़ाइलनामों के लिए GNU TAR प्रारूप को समझता है।

इमारत

  • GNU make
  • कंपाइलर - जीएनयू सी कंपाइलर, gcc या क्लेंग के लिए gcc या सी कंपाइलर clang
  • पर्ल ५
  • GNU m4 - यदि HiPE (देशी कोड) समर्थन सक्षम है। HiPE का उपयोग कर अक्षम किया जा सकता है --disable-hipe
  • ncurses , termcap , or termlib - विकास शीर्षलेखों और पुस्तकालयों की आवश्यकता होती है, जिन्हें अक्सर ncurses-devel रूप में जाना जाता है। इन पुस्तकालयों में से किसी के बिना निर्माण के लिए --without-termcap उपयोग करें। ध्यान दें कि इस मामले में केवल पुराने शेल (बिना किसी लाइन एडिटिंग) का उपयोग किया जा सकता है।
  • sed - मूल पाठ परिवर्तन के लिए स्ट्रीम संपादक।
Git में बिल्डिंग
  • कम से कम संस्करण 2.59 का GNU autoconf । ध्यान दें कि जारी स्रोत के अनमॉडिफाइड संस्करण का निर्माण करते समय autoconf की आवश्यकता नहीं होती है।
ओएस एक्स पर बिल्डिंग
  • Xcode - मैक ऐप स्टोर के माध्यम से डाउनलोड और इंस्टॉल करें। आगे बढ़ने से पहले Building on a Mac बारे में पढ़ें।

स्थापित कर रहा है

  • एक install प्रोग्राम जो कई फ़ाइल नाम ले सकता है।

2.3 वैकल्पिक उपयोगिताएँ

यदि निर्भरताएं पूरी नहीं होती हैं, तो कुछ एप्लिकेशन अपने आप स्किप हो जाते हैं। उन अनुप्रयोगों के लिए आवश्यक उपयोगिताओं की एक सूची यहां दी गई है। दस्तावेज़ बनाने के लिए आपको उपयोगिताओं की भी आवश्यकता होगी।

इमारत

  • ओपनएसएसएल - सिक्योर सॉकेट लेयर और ट्रांसपोर्ट लेयर सिक्योरिटी के लिए ओपनसोर्स टूलकिट। एप्लिकेशन crypto निर्माण के लिए आवश्यक है। इसके अलावा, ssl और ssh को एक कार्यशील क्रिप्टो एप्लिकेशन की आवश्यकता होती है और ओपनएसएसएल गायब होने पर उसे छोड़ दिया जाएगा। public_key एप्लिकेशन crypto बिना उपलब्ध है, लेकिन कार्यक्षमता बहुत सीमित होगी।

    हेडर फ़ाइलों सहित ओपनएसएसएल के विकास पैकेज के साथ-साथ बाइनरी कमांड प्रोग्राम openssl । ओपनएसएसएल के कम से कम संस्करण 0.9.8 की आवश्यकता है। अधिक पढ़ें और http://www.openssl.org से डाउनलोड http://www.openssl.org

  • ओरेकल जावा एसई जेडडीके - जावा डेवलपमेंट किट (स्टैंडर्ड एडिशन)। आवेदन jinterface निर्माण के लिए आवश्यक है। जेडीके के कम से कम संस्करण 1.6.0 की आवश्यकता है।

    http://www.oracle.com/technetwork/java/javase/downloads से डाउनलोड http://www.oracle.com/technetwork/java/javase/downloads । हमने IBM के JDK 1.6.0 के साथ भी परीक्षण किया है।

  • X विंडोज - यूनिक्स / लिनक्स पर Erlang / OTP एप्लीकेशन gs बनाने के लिए डेवलपमेंट हेडर और लाइब्रेरी की आवश्यकता होती है।

  • flex - यूनिक्स / लिनक्स पर megaco एप्लीकेशन के लिए फ्लेक्स स्कैनर बनाने के लिए हेडर और लाइब्रेरी की आवश्यकता होती है।

  • wxWidgets - जीयूआई अनुप्रयोगों के लिए टूलकिट। wx एप्लिकेशन के निर्माण के लिए आवश्यक है। WxWidgets के कम से कम संस्करण 3.0 की आवश्यकता है।

    http://sourceforge.net/projects/wxwindows/files/3.0.0/ से डाउनलोड करें या इसे GitHub से प्राप्त https://github.com/wxWidgets/wxWidgets : https://github.com/wxWidgets/wxWidgets

    Building with wxErlang पर आगे के निर्देश, Building with wxErlang

भवन का दस्तावेज

  • xsltproc - एक कमांड लाइन XSLT प्रोसेसर।

    XML दस्तावेज़ों के लिए XSLT स्टाइलशीट लागू करने के लिए एक उपकरण। Http://xmlsoft.org/XSLT/xsltproc2.html से xsltproc डाउनलोड करें।

  • fop - अपाचे FOP प्रिंट फॉर्मेटर (जावा की आवश्यकता है)। http://xmlgraphics.apache.org/fop से डाउनलोड किया जा सकता है।

2.4 एरलांग / ओटीपी का निर्माण और स्थापना कैसे करें

the released source tar ball निर्माण the released source tar ball लिए निम्नलिखित निर्देश हैं।

चर $ERL_TOP को कई बार उल्लेख किया जाएगा। यह स्रोत ट्री में शीर्ष निर्देशिका को संदर्भित करता है। $ERL_TOP बारे में अधिक जानकारी नीचे make and $ERL_TOP अनुभाग में मिल सकती है। यदि आप git में निर्माण कर रहे हैं, तो संभवतः आप आगे बढ़ने से पहले नीचे Building in Git सेक्शन Building in Git पर एक नज़र डालना चाहते हैं।

अनपैक

अपने GNU संगत TAR प्रोग्राम के साथ Erlang / OTP वितरण फ़ाइल को अनपैक करके प्रारंभ करें।

$ tar -zxf otp_src_21.0.tar.gz    # Assuming bash/sh

अब डायरेक्टरी को बेस डायरेक्टरी में बदलें और $ERL_TOP वैरिएबल सेट करें।

$ cd otp_src_21.0
$ export ERL_TOP=`pwd`    # Assuming bash/sh

का विन्यास

बिल्ड को कॉन्फ़िगर करने के लिए निम्न आदेश चलाएँ:

$ ./configure [ options ]
ध्यान दें

यदि आप git से Erlang / OTP का निर्माण कर रहे हैं तो आपको कॉन्फ़िगर स्क्रिप्ट उत्पन्न करने के लिए ./otp_build autoconf को चलाना होगा।

डिफ़ॉल्ट रूप से, Erlang / OTP रिलीज़ को /usr/local/{bin,lib/erlang} में स्थापित किया जाएगा। यदि आपके पास उदाहरण के लिए मानक स्थान पर स्थापित करने की अनुमति नहीं है, तो आप कहीं और Erlang / OTP स्थापित कर सकते हैं। उदाहरण के लिए, /opt/erlang/21.0/{bin,lib/erlang} में स्थापित करने के लिए, --prefix=/opt/erlang/21.0 विकल्प का उपयोग करें।

यदि कुछ स्थान निर्धारित हैं, तो कुछ प्लेटफार्मों पर पर्ल अजीब तरीके से व्यवहार कर सकता है। यदि आपको भवन बनाते समय त्रुटियाँ मिलती हैं, तो LANG चर सेट करने का प्रयास करें:

$ export LANG=C   # Assuming bash/sh

इमारत

Erlang / OTP रिलीज़ बनाएँ।

$ make

परिक्षण

स्थापना से पहले आपको परीक्षण करना चाहिए कि क्या आपका निर्माण हमारे धुआं परीक्षण को चलाने से ठीक से काम कर रहा है या नहीं। धुआँ परीक्षण पूर्ण Erlang / OTP परीक्षण सूट का एक सबसेट है। पहले आपको परीक्षण सूट बनाने और जारी करने की आवश्यकता होगी।

$ make release_tests

यह $ERL_TOP/release नामक अतिरिक्त फ़ोल्डर बनाता है जिसे tests कहा जाता है। अब, यह धुआँ परीक्षण शुरू करने का समय है।

$ cd release/tests/test_server
$ $ERL_TOP/bin/erl -s ts install -s ts smoke_test batch -s init stop

यह सत्यापित करने के लिए कि सब कुछ ठीक है, आपको अपने वेब ब्राउज़र में $ERL_TOP/release/tests/test_server/index.html खोलना चाहिए और यह सुनिश्चित करना चाहिए कि शून्य विफल परीक्षण मामले हैं।

ध्यान दें

crypto , ssl और ssh बिना बिल्ड पर अपरिभाषित कार्यों के लिए एक असफल परीक्षण मामला है। सत्यापित करें कि विफल परीक्षण केस लॉग केवल स्किप किए गए एप्लिकेशन को कॉल दिखाता है।

स्थापित कर रहा है

अब आप Erlang / OTP रिलीज़ इंस्टॉल करने के लिए तैयार हैं! निम्न आदेश आपके सिस्टम पर रिलीज़ स्थापित करेगा।

$ make install

चल रहा है

अब आपके पास Erlang / OTP की कार्यशील रिलीज़ होनी चाहिए! Erlang / OTP चलाने के निर्देशों के लिए System Principles पर जाएं।

डॉक्यूमेंटेशन कैसे बनाएं

सुनिश्चित करें कि आप स्रोत ट्री में शीर्ष निर्देशिका में हैं।

$ cd $ERL_TOP

यदि आपने वर्तमान स्रोत के पेड़ में सिर्फ Erlang / OTP बनाया है, तो आप पहले से ही configure कर चुके हैं और इसे फिर से करने की आवश्यकता नहीं है; अन्यथा, configure चलाएँ।

$ ./configure [Configure Args]

दस्तावेज़ बनाते समय आपको $PATH में पूर्ण Erlang / OTP-21.0 सिस्टम की आवश्यकता होती है।

$ export PATH=$ERL_TOP/bin:$PATH     # Assuming bash/sh

FOP प्रिंट फॉर्मेटर के लिए, दो कदम उठाने होंगे:

  • $FOP_HOME में $FOP_HOME की अपनी स्थापना का स्थान जोड़ना।

    $ export FOP_HOME=/path/to/fop/dir # Assuming bash/sh
  • अपने $PATH $FOP_HOME script ( $FOP_HOME ) जोड़कर, या तो $FOP_HOME को $PATH जोड़कर, या $FOP_HOME script को एक डायरेक्टरी में पहले से ही आपके $PATH में कॉपी करके।

प्रलेखन का निर्माण करें।

$ make docs
समस्याएँ बनाएँ

हम कभी-कभी ओरेकल के java साथ समस्याओं का अनुभव करते हैं जब fop चलाते समय मेमोरी से बाहर निकलते हैं। इस प्रकार उपलब्ध मेमोरी की मात्रा बढ़ने से हमारे मामले में समस्या हल हो गई है।

$ export FOP_OPTS="-Xmx<Installed amount of RAM in MB>m"

अधिक जानकारी पर पाया जा सकता है

कैसे प्रलेखन स्थापित करने के लिए

दस्तावेज़ीकरण install-docs लक्ष्य का उपयोग करके, या release_docs लक्ष्य का उपयोग करके स्थापित किया जा सकता है।

  • यदि आपने install टारगेट का उपयोग करके एर्लैंग / ओटीपी स्थापित किया है, तो install-docs लक्ष्य का उपयोग करके डॉक्यूमेंट इंस्टॉल करें। configure द्वारा निर्धारित स्थानों का उपयोग किया जाएगा। $DESTDIR का उपयोग उसी तरह किया जा सकता है जैसे कि make install

    $ make install-docs
  • यदि आपने release लक्ष्य का उपयोग करके एरलांग / ओटीपी स्थापित किया है, तो release_docs लक्ष्य का उपयोग करके दस्तावेज़ स्थापित करें। आप आम तौर पर एक ही RELEASE_ROOT का उपयोग करना चाहते हैं जब make release

    $ make release_docs RELEASE_ROOT=<release dir>

डॉक्यूमेंटेशन एक्सेस करना

स्थापना के बाद आप दस्तावेज़ तक पहुँच सकते हैं

  • मैन पेज पढ़ना। सुनिश्चित करें कि erl स्थापित संस्करण का जिक्र कर रहा है। उदाहरण के लिए /usr/local/bin/erl । Mnesia के लिए मैन पेज पर देखने का प्रयास करें

    $ erl -man mnesia
  • यदि उपसर्ग विकल्प का उपयोग किया गया है, तो <BaseDir>/lib/erlang/doc/erlang/index.html या <BaseDir>/lib/erlang/doc/erlang/index.html पृष्ठ लोड करके html पृष्ठों को ब्राउज़ करें।

पूर्व स्वरूपित प्रलेखन कैसे स्थापित करें

पूर्व-स्वरूपित html documentation और man pages से डाउनलोड किया जा सकता है

स्थापना निर्देशिका में HTML संग्रह निकालें।

$ cd <ReleaseDir>
$ tar -zxf otp_html_21.0.tar.gz

erl -man <page> काम करने के लिए यूनिक्स मैनुअल पृष्ठों को उसी तरह स्थापित करना होगा, अर्थात

$ cd <ReleaseDir>
$ tar -zxf otp_man_21.0.tar.gz

जहाँ <ReleaseDir> है

  • <PrefixDir>/lib/erlang यदि आपने make install का उपयोग करके Erlang / OTP make install
  • $DESTDIR<PrefixDir>/lib/erlang यदि आपने make install DESTDIR=<TmpInstallDir> Erlang / OTP का उपयोग किया है।
  • RELEASE_ROOT यदि आपने make release RELEASE_ROOT=<ReleaseDir> का उपयोग करके स्थापित किया है।

2.5 उन्नत विन्यास और एरलांग / ओटीपी का निर्माण

यदि आप अपने Erlang / OTP का निर्माण और स्थापना करना चाहते हैं, तो कृपया व्यक्तिगत चरणों के बारे में विस्तृत जानकारी के लिए पढ़ें।

बनाओ और $ ERL_TOP

संपूर्ण निर्देशिका ट्री में सभी ERL_TOP स्थापना के पूर्ण पथ को खोजने के लिए पर्यावरण चर ERL_TOP का उपयोग करते हैं। configure स्क्रिप्ट यह पता लगाएगी और इसे शीर्ष स्तर मेकफाइल में सेट करेगी (जो कि, निर्माण करते समय, यह पास हो जाएगा)। हालांकि, जब इसे विकसित करना कभी-कभी उपनिर्देशिका में बनाने में सक्षम होने के लिए सुविधाजनक होता है। ऐसा करने के लिए आपको ERL_TOP वैरिएबल सेट करना होगा जब तक आप रन नहीं करते हैं।

उदाहरण के लिए, मान लें कि आपका GNU मेक प्रोग्राम मेक कहलाता है और आप एप्लिकेशन STDLIB का पुनर्निर्माण करना चाहते हैं, तब आप कर सकते हैं:

$ cd lib/stdlib; env ERL_TOP=<Dir> make

जहां <Dir> वह होगा जो आप पाते हैं कि ERL_TOP शीर्ष स्तर ERL_TOP में सेट है।

otp_build बनाम कॉन्फ़िगर / बनाना

बिल्डिंग Erlang / OTP को $ERL_TOP/otp_build स्क्रिप्ट का उपयोग करके या $ERL_TOP/configure करके make सीधे $ERL_TOP/configure किया जा सकता है। otp_build का उपयोग करना आसान है क्योंकि इसमें कम चरण शामिल हैं, लेकिन otp_build बिल्ड प्रक्रिया उतनी लचीली नहीं है जितनी कि configure / बिल्ड प्रक्रिया। विंडोज के लिए बाइनरी रिलीज़ जिसे हम वितरित करते हैं, otp_build का उपयोग करके बनाया गया है।

का विन्यास

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

कॉन्फ़िगर स्क्रिप्ट आपको कई मापदंडों को अनुकूलित करने की अनुमति देता है; प्रकार ./configure --help या ./configure --help=recursive विवरण के लिए ./configure --help=recursive ./configure --help=recursive सभी अनुप्रयोगों में सभी configure स्क्रिप्ट के लिए मदद देगा।

जिन चीजों को आप निर्दिष्ट कर सकते हैं, उनमें से एक वह जगह है जहाँ Erlang / OTP स्थापित किया जाना चाहिए। डिफ़ॉल्ट रूप से Erlang / OTP /usr/local/{bin,lib/erlang} में इंस्टॉल किया जाएगा। समान संरचना रखने के लिए, लेकिन किसी अन्य स्थान पर स्थापित करें, <Dir> कहते हैं, ./configure --prefix=<Dir> इस तरह का - --prefix तर्क का उपयोग करें : ./configure --prefix=<Dir>

उपलब्ध configure विकल्पों में से कुछ हैं:

  • - उपसर्ग --prefix=PATH - स्थापना उपसर्ग निर्दिष्ट करें।
  • --{enable,disable}-kernel-poll - कर्नेल पोल समर्थन (यदि संभव हो तो डिफ़ॉल्ट रूप से सक्षम)
  • --{enable,disable}-hipe - HiPE समर्थन (समर्थित प्लेटफॉर्म पर डिफ़ॉल्ट रूप से सक्षम)
  • --{enable,disable}-fp-exceptions - फ्लोटिंग पॉइंट अपवाद (फ्लोटिंग पॉइंट ऑपरेशंस के लिए एक अनुकूलन)। डिफ़ॉल्ट ऑपरेटिंग सिस्टम और हार्डवेयर प्लेटफॉर्म पर निर्भर करता है। ध्यान दें कि इसे सक्षम करने से आपको एक प्रतीत होता है कि काम करने की प्रणाली मिल सकती है जो कभी-कभी फ्लोटिंग पॉइंट ऑपरेशंस पर विफल हो जाती है।
  • --enable-m64-build - (64 (g)cc -m64 फ्लैग का उपयोग करके 64-बिट बायनेरिज़ का --enable-m64-build
  • --enable-m32-build - (g)cc -m32 फ्लैग का उपयोग करके 32-बिट बायनेरिज़ का --enable-m32-build
  • --with-assumed-cache-line-size=SIZE - बाइट्स में कैश-लाइन आकार सेट करें। डिफ़ॉल्ट 64 है। मान्य मान 16 और 8192 के बीच दो की शक्तियां हैं। झूठी साझाकरण से बचने के लिए रनटाइम सिस्टम इस मान का उपयोग करता है। एक बहुत बड़ा मूल्य स्मृति को बर्बाद करता है। छोटे मूल्य के लिए गलत शेयरिंग की मात्रा में वृद्धि होगी।
  • --{with,without}-termcap - termcap (बिना मतलब कि पुराने --{with,without}-termcap शेल का उपयोग किया जा सकता है)
  • --with-javac=JAVAC - जावा कंपाइलर का उपयोग करने के लिए निर्दिष्ट करें
  • --{with,without}-javac - जावा कंपाइलर (बिना मतलब के कि jinterface एप्लीकेशन नहीं jinterface )
  • --{enable,disable}-dynamic-ssl-lib - डायनामिक ओपनएसएसएल लाइब्रेरी
  • --{enable,disable}-builtin-zlib लिए अंतर्निहित स्रोत का उपयोग करें।
  • --{with,without}-ssl - ओपनएसएसएल (बिना इसका मतलब है कि crypto , ssh , और ssl का निर्माण नहीं होगा)
  • --with-ssl=PATH - OpenSSL के निर्दिष्ट स्थान में शामिल हैं और lib
  • --with-ssl-incl=PATH - OpenSSL के स्थान include निर्देशिका include , यदि इसके द्वारा निर्दिष्ट --with-ssl=PATH से भिन्न हो
  • --with-ssl-rpath=yes|no|PATHS - ओपनएसएसएल के लिए रनटाइम लाइब्रेरी पथ। डिफ़ॉल्ट yes , जो कई मानक स्थानों के बराबर है। यदि no , तो कोई रनटाइम लाइब्रेरी पथ का उपयोग नहीं किया जाएगा। और कुछ भी पथों की अल्पविराम से अलग की गई सूची होनी चाहिए।
  • --with-libatomic_ops=PATH - परमाणु मेमोरी एक्सेस के लिए libatomic_ops लाइब्रेरी का उपयोग करें। यदि configure आपको कोई मूल परमाणु कार्यान्वयन के बारे में सूचित नहीं करना चाहिए, तो आप आम तौर पर libatomic_ops लाइब्रेरी का उपयोग करना चाहते हैं। इसे https://github.com/ivmai/libatomic_ops/ से डाउनलोड किया जा सकता है।
  • --disable-smp-require-native-atomics - यदि SMP रनटाइम सिस्टम बनाया जाने वाला है, तो डिफ़ॉल्ट रूप से configure विफल हो जाएगा, और देशी परमाणु मेमोरी एक्सेस के लिए कोई कार्यान्वयन नहीं मिल सकता है। यदि ऐसा होता है, तो आपको एक देशी परमाणु कार्यान्वयन खोजने के लिए प्रोत्साहित किया जाता है, जिसका उपयोग किया जा सकता है, उदाहरण के लिए, libatomic_ops का उपयोग libatomic_ops , लेकिन --disable-smp-require-native-atomics libatomic_ops --disable-smp-require-native-atomics करके आप म्यूटेक्स या स्पिनलॉक के आधार पर फ़ॉलबैक कार्यान्वयन का उपयोग कर निर्माण कर सकते हैं। SMP रनटाइम सिस्टम का प्रदर्शन हालांकि मूल परमाणु स्मृति अभिगम के लिए कार्यान्वयन के बिना अत्यधिक पीड़ित होगा।
  • --enable-static-{nifs,drivers} - OS पर nif और ड्राइवरों के उपयोग की अनुमति देने के लिए जो पुस्तकालयों की गतिशील लिंकिंग का समर्थन नहीं करते हैं, यह संभव है कि मुख्य Erlang VM बाइनरी के साथ nifs और ड्राइवरों को लिंक करें। यह एक अल्पविराम से अलग की गई सूची को अभिलेखागार में पारित करके किया जाता है जिसे आप सांख्यिकीय रूप से लिंक करना चाहते हैं। जैसे --enable-static-nifs=/home/$USER/my_nif.a । पथ को निरपेक्ष होना चाहिए और संग्रह का नाम मॉड्यूल के समान होना चाहिए, अर्थात ऊपर उदाहरण में my_nif । यह ड्राइवरों के लिए भी सही है, लेकिन फिर यह ड्राइवर का नाम है जिसे फ़ाइल नाम के समान होना चाहिए। STATIC_ERLANG_{NIF,DRIVER} / ड्राइवर के लिए .o फ़ाइलों को संकलित करते समय आपको STATIC_ERLANG_{NIF,DRIVER} को भी परिभाषित करना होगा। यदि आपका निफ़ / ड्राइवर किसी अन्य डायनेमिक लाइब्रेरी पर निर्भर करता है, तो अब आपको उस लिंक को Erlang VM बाइनरी से जोड़ना होगा। इसे कॉन्फ़िगर करने के लिए LIBS=-llibname पास करके आसानी से प्राप्त किया जाता है।
  • --without-$app - डिफ़ॉल्ट रूप से एर्लैंग / ओटीपी में सभी एप्लिकेशन एक रिलीज में शामिल किए जाएंगे। यदि यह नहीं चाहता है तो यह निर्दिष्ट करना संभव है कि एर्लैंग / ओटीपी को एक या अधिक अनुप्रयोगों के बिना संकलित किया जाना चाहिए, अर्थात --without-wx । अनुप्रयोगों के बीच कोई स्वचालित निर्भरता हैंडलिंग नहीं है। यदि आप किसी ऐसे अनुप्रयोग को अक्षम करते हैं जो किसी अन्य अनुप्रयोग पर निर्भर करता है, तो आपको भी निर्भर अनुप्रयोग को अक्षम करना होगा।
  • --enable-gettimeofday-as-os-system-time - OS प्रणाली समय के लिए gettimeofday() का बल प्रयोग।
  • --enable-prefer-elapsed-monotonic-time-during-suspend - निलंबन के दौरान बीता हुआ समय के साथ एक ओएस मोनोटोनिक समय स्रोत को प्राथमिकता दें।
  • --disable-prefer-elapsed-monotonic-time-during-suspend - निलंबन के दौरान बीता समय के साथ एक ओएस मोनोटोनिक समय स्रोत को पसंद न करें।
  • --with-clock-resolution=high|low - OS सिस्टम समय के लिए घड़ी स्रोत खोजने का प्रयास करें, और डिफ़ॉल्ट रूप से चुने गए की तुलना में उच्च या निम्न रिज़ॉल्यूशन वाला ओएस मोनोटोनिक समय। ध्यान दें कि दोनों विकल्पों को चुने गए डिफ़ॉल्ट घड़ी स्रोतों की तुलना में प्रदर्शन और मापनीयता पर नकारात्मक प्रभाव पड़ सकता है।
  • --disable-saved-compile-time - एमुलेटर बाइनरी में संकलित दिनांक और समय की बचत को अक्षम करें।

यदि आपके या आपके सिस्टम की विशेष आवश्यकताएं हैं, तो कृपया अतिरिक्त कॉन्फ़िगरेशन जानकारी के लिए Makefile पढ़ें।

परमाणु मेमोरी ऑपरेशन और वी.एम.

SMP सपोर्ट वाला VM परमाणु मेमोरी ऑपरेशन का काफी भारी उपयोग करता है। Erlang / OTP का निर्माण करते समय देशी परमाणु स्मृति संचालन प्रदान करने वाला कार्यान्वयन बहुत महत्वपूर्ण है। डिफ़ॉल्ट रूप से VM निर्माण करने से इंकार करेगा यदि देशी परमाणु मेमोरी ऑपरेशन उपलब्ध नहीं हैं।

एर्लैंग / ओटीपी स्वयं को मूल परमाणु मेमोरी संचालन के कार्यान्वयन प्रदान करता है जो कि 32/64-बिट x86, 32/64-बिट SPARC V9, 32-बिट पावरपीसी या 32-बिट टाइल के लिए gcc संगत संकलक के साथ संकलित करते समय उपयोग किया जा सकता है। जब अन्य आर्किटेक्चर के लिए gcc संगत कंपाइलर के साथ संकलित किया जाता है, तो VM __atomic_* (कम से कम 4.7 संस्करण gcc का उपयोग करते समय उपलब्ध हो सकता है) और / __atomic_* का उपयोग करके देशी परमाणु संचालन का उपयोग करने में __atomic_* हो सकता है। (कम से कम संस्करण 4.1 के gcc का उपयोग करते समय उपलब्ध हो सकता है)। यदि केवल gcc का __sync_* उपलब्ध है, तो प्रदर्शन को नुकसान होगा। इस तरह के कॉन्फ़िगरेशन का उपयोग केवल अंतिम उपाय के रूप में किया जाना चाहिए। जब MicroSoft Visual C ++ कंपाइलर देशी परमाणु मेमोरी ऑपरेशन का उपयोग करके विंडोज पर संकलन विंडोज एपीआई द्वारा प्रदान किया जाता है।

वरीयता क्रम में मूल परमाणु कार्यान्वयन:

  • कार्यान्वयन Erlang / OTP द्वारा प्रदान किया गया।
  • विंडोज द्वारा दिया गया एपीआई।
  • __atomic_* आधार पर कार्यान्वयन।
  • यदि उपरोक्त में से कोई भी आपकी वास्तुकला / संकलक के लिए उपलब्ध नहीं है, तो आपको Erlang / OTP के निर्माण से पहले https://github.com/ivmai/libatomic_ops/ बनाने और स्थापित करने की सिफारिश की जाती है। libatomic_ops लाइब्रेरी विभिन्न प्रकार के आर्किटेक्चर और संकलक के लिए देशी परमाणु मेमोरी ऑपरेशन प्रदान करती है। Erlang / OTP का निर्माण करते समय आपको उस सिस्टम के निर्माण की जानकारी देने की आवश्यकता होती है जहां - libatomic_ops लाइब्रेरी --with-libatomic_ops=PATH configure स्विच का उपयोग करके स्थापित की जाती है।
  • अंतिम उपाय के रूप में, कार्यान्वयन केवल gcc __sync_* पर आधारित है। हालांकि यह बहुत सारे महंगे और अनावश्यक मेमोरी बैरियर के निर्देश जारी करेगा। यही है, प्रदर्शन भुगतना होगा। configure स्क्रिप्ट इसके निष्पादन के अंत में चेतावनी देगा यदि इसे इसके अलावा कोई अन्य विकल्प नहीं मिल सकता है।

इमारत

अपेक्षाकृत तेज़ कंप्यूटर पर Erlang / OTP का निर्माण करने में लगभग 5 मिनट लगते हैं। इसे तेज करने के लिए, आप -j<num_jobs> विकल्प के साथ समानांतर मेक का उपयोग कर सकते हैं।

$ export MAKEFLAGS=-j8    # Assuming bash/sh
$ make

यदि आपने एक पैच के साथ स्रोत को अपग्रेड किया है तो आपको नए बिल्ड से पहले पिछले बिल्ड से सफाई करने की आवश्यकता हो सकती है। मेक make clean करने से पहले नीचे दिया Pre-built Source Release सेक्शन ज़रूर पढ़ें।

गिट के भीतर

गेट वर्किंग डायरेक्टरी में निर्माण करते समय आपको अपने सिस्टम पर कम से कम संस्करण 2.59 का एक GNU autoconf होना चाहिए, क्योंकि बिल्डिंग शुरू करने से पहले आपको configure स्क्रिप्ट जेनरेट करनी होगी।

configure लिपियों को $ERL_TOP निर्देशिका में ./otp_build autoconf द्वारा उत्पन्न किया जाता है। aclocal.m4 या aclocal.m4 फ़ाइल को संशोधित configure.in जाने पर configure स्क्रिप्ट को भी पुनर्जीवित करना होगा। ध्यान दें कि एक शाखा की जाँच करते समय एक aclocal.m4 या aclocal.m4 फ़ाइल सामग्री बदल सकती है, और इसलिए आपको शाखा की जाँच करते समय configure स्क्रिप्ट को फिर से प्राप्त करना पड़ सकता है। पुनर्निर्मित configure स्क्रिप्ट का अर्थ है कि आपको configure और फिर से निर्माण करना है।

ध्यान दें

जारी स्रोत के ./otp_build autoconf रनिंग ./otp_build autoconf जरूरत नहीं होती है।

अन्य उपयोगी जानकारी हमारे GitHub wiki पर मिल सकती है:

ओएस एक्स (डार्विन)

सुनिश्चित करें कि कमांड hostname एक वैध पूरी तरह से योग्य होस्ट नाम लौटाता है (यह /etc/hostconfig में कॉन्फ़िगर किया गया है)। अन्यथा आपको वितरित सिस्टम चलाते समय समस्याओं का अनुभव हो सकता है।

यदि आप लिंक्ड-इन ड्राइवर (साझा लाइब्रेरी) विकसित करते हैं, तो आपको gcc और फ्लैग -bundle -flat_namespace -undefined suppress का उपयोग करके लिंक करना होगा। संकलित करते समय आप CFLAGS में -fno-common भी शामिल करें। पुस्तकालय प्रत्यय के रूप में .so उपयोग करें।

यदि आपके पास Xcode 4.3 है, या बाद में, आपको Xcode में डाउनलोड वरीयता फलक के माध्यम से "कमांड लाइन टूल" डाउनलोड करना होगा।

WxErlang के साथ भवन

यदि आप wx एप्लीकेशन बनाना चाहते हैं, तो आपको https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.3/wxWidgets-3.0.3.tar.bz2 से wxWidgets-3.0 ( wxWidgets-3.0.3.tar.bz2 प्राप्त करना होगा। https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.3/wxWidgets-3.0.3.tar.bz2 ) या बग फिक्स के साथ इसे https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.3/wxWidgets-3.0.3.tar.bz2 से प्राप्त करें:

$ git clone --branch WX_3_0_BRANCH [email protected]:wxWidgets/wxWidgets.git

2.8 संगतता सक्षम होने पर wxWidgets-3.1 संस्करण भी काम करना चाहिए, नीचे कमांड को कॉन्फ़िगर करने के लिए --enable-compat28 जोड़ें।

कॉन्फ़िगर करें और बनाएँ wxWidgets (लिनक्स पर साझा पुस्तकालय):

$ ./configure --prefix=/usr/local
$ make && sudo make install
$ export PATH=/usr/local/bin:$PATH

कॉन्फ़िगर करें और बनाएँ wxWidgets (लिनक्स पर स्थिर पुस्तकालय):

$ export CFLAGS=-fPIC
$ export CXXFLAGS=-fPIC
$ ./configure --prefix=/usr/local --disable-shared
$ make && sudo make install
$ export PATH=/usr/local/bin:$PATH

कॉन्फ़िगर करें और बनाएँ wxWidgets (Mavericks पर - 10.9):

$ ./configure --with-cocoa --prefix=/usr/local
or without support for old versions and with static libs
$ ./configure --with-cocoa --prefix=/usr/local --with-macosx-version-min=10.9 --disable-shared
$ make
$ sudo make install
$ export PATH=/usr/local/bin:$PATH

जांचें कि आपको सही wx-config मिला है

$ which wx-config && wx-config --version-full

निर्माण Erlang / OTP

$ export PATH=/usr/local/bin:$PATH
$ cd $ERL_TOP
$ ./configure
$ make
$ sudo make install
पूर्व निर्मित स्रोत रिलीज़

स्रोत रिलीज़ को बहुत सारे प्लेटफ़ॉर्म स्वतंत्र निर्माण परिणामों के साथ दिया गया है जो पहले से निर्मित हैं। यदि आप इन पूर्व-निर्मित फ़ाइलों को निकालना चाहते हैं, तो $ERL_TOP निर्देशिका से ./otp_build remove_prebuilt_files को $ERL_TOP । आपके द्वारा ऐसा करने के बाद, आप पहले की तरह ही निर्माण कर सकते हैं, लेकिन निर्माण प्रक्रिया में अधिक समय लगेगा।

चेतावनी

स्रोत ट्री की मनमानी निर्देशिका में make clean करना, बिल्ड बूटस्ट्रैपिंग के लिए आवश्यक फ़ाइलों को हटा सकता है।

./otp_build save_bootstrap को $ERL_TOP निर्देशिका से make clean करने से पहले सुनिश्चित करें कि यह make clean करने के बाद निर्माण करना संभव होगा। ./otp_build save_bootstrap को स्वचालित रूप से तब ./otp_build save_bootstrap जाएगा जब $ERL_TOP से या तो clean लक्ष्य या डिफ़ॉल्ट लक्ष्य के साथ $ERL_TOP । यह स्वचालित रूप से भी आमंत्रित किया जाता है यदि ./otp_build remove_prebuilt_files को आमंत्रित किया जाता है।

यदि आपको बूटस्ट्रैप बीम फ़ाइलों को सत्यापित करने की आवश्यकता है, तो दिए गए स्रोत फ़ाइलों से मेल खाते हैं, का उपयोग करें ./otp_build update_primary एक नया ./otp_build update_primary बनाने के लिए जिसमें अंतर मौजूद हो, यदि कोई मौजूद हो।

कैसे एक डीबग सक्षम Erlang RunTime सिस्टम बनाने के लिए

एक डिबग सक्षम रनटाइम सिस्टम के ऊपर वर्णित सभी सामान्य भवन चरणों को पूरा करने के बाद बनाया जा सकता है। ऐसा करने के लिए आपको निर्देशिका को $ERL_TOP/erts/emulator और निष्पादित करना होगा:

$ (cd $ERL_TOP/erts/emulator && make debug)

यह एक बीम.smp.debug निष्पादन योग्य का उत्पादन करेगा। फ़ाइल को सामान्य (ऑप्ट) संस्करण के साथ स्थापित किया गया है।

डिबग सक्षम रनटाइम सिस्टम निष्पादित करने के लिए शुरू करें:

$ $ERL_TOP/bin/cerl -debug

डिबग सक्षम रनटाइम सिस्टम में लॉक उल्लंघन की जाँच करने की सुविधा होती है, डेवलपर की शुद्धता सुनिश्चित करने में मदद करने के लिए चेकिंग और विभिन्न पवित्रता जाँच करता है। इनमें से कुछ सुविधाओं को उचित कॉन्फ़िगर विकल्पों का उपयोग करके एक सामान्य बीम पर सक्षम किया जा सकता है।

अन्य प्रकार के रनटाइम सिस्टम हैं जो कि केवल वर्णित समान चरणों का उपयोग करके बनाए जा सकते हैं।

$ (cd $ERL_TOP/erts/emulator && make $TYPE)

जहां $TYPE opt , gcov , gcov , debug , lcnt , या lcnt । ये विभिन्न बीम प्रकार डिबगिंग और प्रोफाइलिंग उद्देश्यों के लिए उपयोगी हैं।

स्थापित कर रहा है

  • DESTDIR का उपयोग करके DESTDIR । आप एक अस्थायी निर्देशिका में स्थापित चरण का प्रदर्शन कर सकते हैं और बाद में स्थापना को DESTDIR चर के उपयोग से अपने सही स्थान पर ले जा सकते हैं:

    $ make DESTDIR=<tmp install dir> install

    स्थापना $DESTDIR द्वारा उपसर्ग किए गए स्थान में बनाई $DESTDIR । हालांकि, इसे वहां से नहीं चलाया जा सकता है। इसे चलाने से पहले इसे सही स्थान पर ले जाने की आवश्यकता है। यदि DESTDIR को सेट नहीं किया गया है, लेकिन INSTALL_PREFIX सेट किया गया है, तो DESTDIR को INSTALL_PREFIX सेट किया जाएगा। ध्यान दें कि पूर्व R13B04 में INSTALL_PREFIX छोटी गाड़ी थी और EXTRA_PREFIX रूप में व्यवहार किया गया था (नीचे देखें)। DESTDIR का उपयोग करके इंस्टॉलेशन प्रक्रिया के लिए उपयोग के बहुत सारे क्षेत्र हैं, जैसे कि पैकेज बनाते समय, क्रॉस कंपाइलिंग, आदि। यहाँ एक उदाहरण है जहाँ इंस्टॉलेशन /opt/local तहत होना चाहिए:

    $ ./configure --prefix=/opt/local
    $ make
    $ make DESTDIR=/tmp/erlang-build install
    $ cd /tmp/erlang-build/opt/local
    $     # gnu-tar is used in this example
    $ tar -zcf /home/me/my-erlang-build.tgz *
    $ su -
    Password: *****
    $ cd /opt/local
    $ tar -zxf /home/me/my-erlang-build.tgz
  • release लक्ष्य का उपयोग करके इंस्टॉल करें। make install बजाय आप release टारगेट का उपयोग करके जो भी डायरेक्टरी चाहें उसमें इंस्टॉलेशन बना सकते हैं और Install स्क्रिप्ट को स्वयं चला सकते हैं। RELEASE_ROOT का उपयोग उस निर्देशिका को निर्दिष्ट करने के लिए किया जाता है जहां स्थापना बनाई जानी चाहिए। यदि आप इंस्टॉल का उपयोग करके इंस्टॉल करते हैं, तो यह डिफ़ॉल्ट रूप से /usr/local/lib/erlang तहत समाप्त होता है। configure चरण में दिए गए सभी इंस्टॉलेशन पथों को अनदेखा किया गया है, साथ ही DESTDIR , और INSTALL_PREFIX । यदि आप एक विशिष्ट bin निर्देशिका से लिंक चाहते हैं तो आपको अपने आप को स्थापित करना होगा। एक उदाहरण जहां Erlang / OTP /home/me/OTP पर स्थित होना चाहिए:

    $ ./configure
    $ make
    $ make RELEASE_ROOT=/home/me/OTP release
    $ cd /home/me/OTP
    $ ./Install -minimal /home/me/OTP
    $ mkdir -p /home/me/bin
    $ cd /home/me/bin
    $ ln -s /home/me/OTP/bin/erl erl
    $ ln -s /home/me/OTP/bin/erlc erlc
    $ ln -s /home/me/OTP/bin/escript escript
    ...

    Install स्क्रिप्ट को वर्तमान में उस निर्देशिका में निम्नानुसार लागू किया जाना चाहिए जहां वह रहता है (शीर्ष निर्देशिका):

    $ ./Install [-cross] [-minimal|-sasl] <ERL_ROOT>

    कहा पे:

    • -minimal एक इंस्टॉलेशन बनाता है जो कम से कम अनुप्रयोगों को शुरू करता है, अर्थात, केवल kernel और stdlib को शुरू किया जाता है। न्यूनतम प्रणाली सामान्य रूप से पर्याप्त है, और वही है जो make install उपयोग करता है।
    • -sasl एक इंस्टालेशन बनाता है जो sasl एप्लीकेशन को भी शुरू sasl है।
    • क्रॉस पार संकलन के लिए। स्थापित स्क्रिप्ट को सूचित करता है कि यह निर्माण मशीन पर चलाया जाता है।
    • <ERL_ROOT> - रन समय पर उपयोग करने के लिए <ERL_ROOT> स्थापना का पूर्ण पथ। यह अक्सर वर्तमान कार्यशील निर्देशिका के समान होता है, लेकिन होना नहीं है। यह फ़ाइल सिस्टम के माध्यम से उसी निर्देशिका में किसी अन्य पथ का अनुसरण कर सकता है।

    यदि न तो- -minimal , न ही -sasl तर्क के रूप में पारित किया जाता है तो आपको संकेत दिया जाएगा।

  • EXTRA_PREFIX का उपयोग करके परीक्षण इंस्टॉल करें। EXTRA_PREFIX चर की सामग्री make install करते समय सभी स्थापना पथों को उपसर्ग करेगी। ध्यान दें कि EXTRA_PREFIX के समान है, लेकिन इसका DESTDIR के समान प्रभाव नहीं है। स्थापना और EXTRA_PREFIX द्वारा निर्दिष्ट स्थान से चलाई जा EXTRA_PREFIX । यदि आप EXTRA_PREFIX बिना वास्तविक इंस्टॉल करने से पहले, सिस्टम को आज़माना चाहते हैं, तो यह उपयोगी हो सकता है।

जब make install और डिफ़ॉल्ट स्थापना उपसर्ग का उपयोग किया जाता है, तो सभी प्रतीकात्मक लिंक /usr/local/bin से सभी सार्वजनिक Erlang / OTP निष्पादक /usr/local/lib/erlang/bin । इंस्टॉलेशन फेज़ जब तक - --bindir और --bindir बिन डायरेक्टरी के सापेक्ष प्रतीकात्मक लिंक बनाने की कोशिश करेगा, तब तक - --bindir नीचे स्थित, दोनों में --exec-prefix रूप में --exec-prefix होता है। जहां --exec-prefix डिफ़ॉल्ट से --prefix लिए चूक --prefix --prefix , --exec-prefix , - --bindir , और - --libdir सभी तर्क हैं जिन्हें configure करने के लिए पारित किया जा सकता configure । एक रिश्तेदार या पूर्ण लिंक BINDIR_SYMLINKS=relative|absolute पास करने के लिए BINDIR_SYMLINKS=relative|absolute कर make । स्थापित चरण के दौरान तर्क के रूप में BINDIR_SYMLINKS=relative|absolute । ध्यान दें कि ऐसा अनुरोध विफल हो सकता है यदि अनुरोध संतुष्ट नहीं हो सकता है।

चल रहा है

HiPE का उपयोग करना

HiPE निम्नलिखित सिस्टम कॉन्फ़िगरेशन का समर्थन करता है:

  • x86: सभी 32-बिट और 64-बिट मोड प्रोसेसर काम करना चाहिए।

    • लिनक्स: फेडोरा कोर समर्थित है। दोनों 32-बिट और 64-बिट मोड समर्थित हैं।

      NPTL ग्लिब को दृढ़ता से पसंद किया जाता है, या "फ्लोटिंग स्टैक्स" के लिए कॉन्फ़िगर किया गया एक लिनक्सटाइब्स ग्लिबक। पुराने गैर-फ्लोटिंग स्टैक ग्लिब्स में एक मौलिक समस्या है जो हाइप का समर्थन करती है और थ्रेड्स परस्पर अनन्य हैं।

    • सोलारिस: सोलारिस 10 (32-बिट और 64-बिट) और 9 (32-बिट) समर्थित हैं। बिल्ड को GNU C कंपाइलर (gcc) के एक संस्करण की आवश्यकता होती है जिसे GNU असेंबलर (गैस) का उपयोग करने के लिए कॉन्फ़िगर किया गया है। सूर्य का x86 कोडांतरक सशक्त रूप से समर्थित नहीं है

    • FreeBSD: 32-बिट और 64-बिट मोड में FreeBSD 6.1 और 6.2 काम करना चाहिए।

    • ओएस एक्स / डार्विन: 32-बिट मोड में डार्विन 9.8.0 काम करना चाहिए।

  • PowerPC: सभी 32-बिट 6xx / 7xx (G3) / 74xx (G4) प्रोसेसर काम करना चाहिए। 970 (G5) और POWER5 प्रोसेसर पर 32-बिट मोड काम करना चाहिए।

    • लिनक्स (येलो डॉग) और OS X 10.4 समर्थित हैं।
  • SPARC: 32-बिट उपयोगकर्ता कोड चलाने वाले सभी UltraSPARC प्रोसेसर काम करना चाहिए।

    • सोलारिस 9 समर्थित है। बिल्ड को एक gcc आवश्यकता होती है जिसे Sun के कोडांतरक और लिंकर का उपयोग करने के लिए कॉन्फ़िगर किया गया है। जीएनयू कोडांतरक का उपयोग करना लेकिन सूर्य के लिंकर को समस्याओं का कारण माना जाता है।

    • लिनक्स (अरोरा) समर्थित है।

  • ARM: ARMv5TE (यानी XScale) प्रोसेसर को काम करना चाहिए। दोनों बड़े-एंडियन और छोटे-एंडियन मोड का समर्थन करते हैं।

    • लिनक्स समर्थित है।

HiPE स्वचालित रूप से निम्न सिस्टम पर सक्षम है:

  • 32-बिट मोड में x86: लिनक्स, सोलारिस, फ्रीबीएसडी
  • 64-बिट मोड में x86: लिनक्स, सोलारिस, फ्रीबीएसडी
  • PowerPC: लिनक्स, मैक OSX
  • स्पार्क: लिनक्स
  • एआरएम: लिनक्स

अन्य समर्थित प्रणालियों पर, हायपे को सक्षम करने के लिए Advanced Configure देखें।

यदि आप HiPE का समर्थन करने वाले प्लेटफ़ॉर्म पर चल रहे हैं और यदि आपने HiPE को अक्षम नहीं किया है, तो आप Erlang शेल से इस तरह मूल कोड में एक मॉड्यूल संकलित कर सकते हैं:

1> c(Module, native).

या

1> c(Module, [native|OtherOptions]).

Erlc प्रोग्राम का उपयोग करके, इस तरह लिखें

$ erlc +native Module.erl

मूल कोड को बीम फ़ाइल में रखा जाएगा और बीम फ़ाइल लोड होने पर स्वचालित रूप से लोड किया जाएगा।

हाइप विकल्प जोड़ने के लिए, एरलंग शेल से इस तरह लिखें:

1> c(Module, [native,{hipe,HipeOptions}|MoreOptions]).

उपलब्ध विकल्पों को प्रिंट करने के लिए hipe:help_options/0 का उपयोग करें।

1> hipe:help_options().

Original text