लिनक्स पर संकलन: बाइनरी बनाने के 3 चरण 🔥
मुख्य सारांश
- अधिकांश सॉफ्टवेयर स्रोत कोड से संकलन के लिए 3-चरणीय प्रक्रिया का पालन करते हैं:
./configure && make && make install
. - लिपि कॉन्फ़िगर निर्भरताओं की जाँच करता है, बनाना निष्पादन योग्य और उपकरण जैसे उत्पन्न करता है ऑटोकॉन्फ़/ऑटोमेक इस प्रक्रिया को स्वचालित करें.
- स्थापना आमतौर पर वैकल्पिक होती है, जिससे निर्देशिकाओं में कॉपी किए गए कमांड को चलाना आसान हो जाता है
पथ
प्रणाली का.
पैकेज मैनेजर का उपयोग करने की तुलना में स्रोत कोड से संकलन करना कठिन लग सकता है, लेकिन तीन बुनियादी कमांड के साथ, प्रक्रिया सरल और सीधी है।
स्रोत कोड से संकलन क्या है?
आपके द्वारा उपयोग किए जाने वाले प्रोग्रामों को व्याख्यायित या संकलित किया जा सकता है। व्याख्यायित प्रोग्राम टेक्स्ट फ़ाइलें होती हैं जिनमें कोड होता है जिसे कोई अन्य प्रोग्राम (इंटरप्रेटर) वास्तविक समय में निष्पादित करता है। दूसरी ओर, संकलित प्रोग्राम बाइनरी फ़ाइलें होती हैं जिनमें निष्पादन के लिए तैयार मशीन कोड होता है।
संकलित निष्पादनयोग्य फ़ाइलें बहुत आम हैं, खासकर बड़े प्रोग्रामों में। जब आप स्रोत कोड से संकलित करते हैं, तो आपsas एक संकलक की तरह जीसीसी
कोड को निष्पादन योग्य प्रोग्राम में परिवर्तित करने के लिए, जो प्रायः एकाधिक फाइलों में वितरित होता है।

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

Node.js भी इसी संरचना का अनुसरण करता है, जैसा कि इसकी BUILDING.md फ़ाइल में दर्शाया गया है:

प्रत्येक प्रोजेक्ट में इस कमांड स्ट्रिंग से थोड़ा अंतर हो सकता है। तार्किक AND ऑपरेटर (&&
) यदि कोई भी चरण विफल हो जाता है तो प्रक्रिया रोक देता है:
./configure && make && make install
या आप प्रत्येक कमांड को अलग-अलग एक पंक्ति में अर्धविराम लगाकर चला सकते हैं, हालांकि इससे सभी कमांड बिना रुके चले जाएंगे, यदि कोई विफल हो जाए:
./configure; बनाना; इंस्टॉल बनाना
आप तीनों पंक्तियाँ अलग-अलग भी कर सकते हैं:
./configure make make install
यदि आप प्रोग्राम को इंस्टॉल किए बिना उसे आज़माना चाहते हैं, तो आप इसे छोड़ सकते हैं स्थापित करें
और इसे अपने फ़ोल्डर से चलाएं.
कॉन्फ़िगर
रेडी, जबकि अन्य (जैसे grep) को इसे जनरेट करने के लिए पहले एक और स्क्रिप्ट चलाने की आवश्यकता होती है। प्रोजेक्ट की सिफारिशों का पालन करने के लिए हमेशा INSTALL, BUILD, या README फ़ाइल देखें। 📋./configure प्रक्रिया कैसे शुरू करता है
लिपि कॉन्फ़िगर
यह संकलन प्रक्रिया का प्रारंभिक बिंदु है, जो परियोजना को आपके परिवेश के अनुकूल बनाता है।
यह स्क्रिप्ट प्रोजेक्ट के लिए आवश्यक निर्भरताओं की जाँच करती है, संस्करणों और उपलब्धता की जाँच करती है। पूरा होने पर, यह नाम की एक फ़ाइल उत्पन्न करती है मेकफ़ाइल
अगले चरण के लिए.
लिपि कॉन्फ़िगर
कई विन्यास योग्य विकल्प प्रदान करता है ./कॉन्फ़िगर --सहायता
, जिससे आप निर्माण विवरण को अनुकूलित कर सकते हैं।
कॉन्फ़िगर
जैसा बनाना
स्क्रीन पर बहुत सारा आउटपुट उत्पन्न करें। विकल्प का उपयोग करें --शांत
यदि आप इन कमांडों को बिना अधिक विवरण दिखाए चलाना चाहते हैं। 🤫यदि स्क्रिप्ट गायब है कॉन्फ़िगर
, कुछ परियोजनाओं में एक स्क्रिप्ट शामिल होती है जैसे ऑटोजेन.श
इसे जनरेट करने के लिए। उदाहरण के लिए, htop इसका इस्तेमाल करता है:

बहुत सरल परियोजनाओं या अन्य भाषाओं में लिखी गई परियोजनाओं में शायद यह सुविधा न हो कॉन्फ़िगर
वहां प्रक्रिया दो चरणों में है: बनाएं && इंस्टॉल करें
.
लिपि कॉन्फ़िगर
यह इंस्टॉलेशन विवरण को भी नियंत्रित करता है, जैसे कि पैरामीटर उपसर्ग
, जो इंस्टॉलेशन रूट डायरेक्टरी सेट करता है। डिफ़ॉल्ट रूप से यह /usr/स्थानीय
, लेकिन आप अपनी फ़ाइलों को बेहतर ढंग से व्यवस्थित करने के लिए इसे बदल सकते हैं।
अधिकांश काम कर देता है
बाद कॉन्फ़िगर
उत्पन्न करता है मेकफ़ाइल
, सॉफ्टवेयर का वास्तविक संकलन इसके साथ शुरू होता है बनाना
.
यह कार्यक्रम पढ़ता है मेकफ़ाइल
और यह तय करने के लिए नियमों का पालन करता है कि कौन सी फ़ाइलें बनानी या अपडेट करनी हैं। मेकफाइल्स
हस्तलिखित पाठ उन लोगों के लिए समझने में आसान होते हैं जो वाक्यविन्यास जानते हैं।
उदाहरण के लिए, यह मेकफ़ाइल
सरल एक प्रोग्राम संकलित करता है जो फ़ाइल पर निर्भर करता है प्रोग्राम.सी
:
प्रोग्राम: program.c gcc -o प्रोग्राम program.c
बनाना
अगर जांच प्रोग्राम.सी
पिछले संकलन के बाद से इसमें कोई बदलाव नहीं हुआ है। अगर इसमें कोई बदलाव नहीं हुआ है, तो कुछ न करें; अगर हुआ है, तो इसके साथ संकलित करें जीसीसी
.

Los मेकफाइल्स
स्वचालित रूप से उत्पन्न होने वाले आमतौर पर बहुत अधिक जटिल होते हैं। उदाहरण के लिए, मेकफ़ाइल
htop में 2,440 लाइनें हैं:

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

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