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