लिंकर क्या है? What is linker in Hindi

आज कि पोस्ट में हम बात करेंगे लिंकर क्या है? (What is linker in Hindi) और Static Linking क्या है?, Dynamic Linking क्या है? हम इसके बारे में बेसिक जानकारी प्राप्त करेंगे वो भी एक दम सरल भाषा में.

लिंकर क्या है? (What is Linker in Hindi)

Computer science में, एक Linker एक कंप्यूटर प्रोग्राम है जो एक Compiler द्वारा जेनेरेट एक या अधिक ऑब्जेक्ट फ़ाइलों को लेता है और उन्हें एक Executable program में बदलता है.

कंप्यूटर प्रोग्राम आमतौर पर कई मॉड्यूल से बने होते हैं जो अलग-अलग ऑब्जेक्ट फ़ाइलों तक एक पूल बांधते हैं. रास्ता बना देते है, प्रत्येक एक compiled computer प्रोग्राम होता है.

एक पूरे के रूप में काम करने वाले symbols का उपयोग करके इन अलग-अलग संकलित ऑब्जेक्ट फ़ाइलों को संदर्भित करता है. Linkerइन अलग-अलग फाइलों को एक एक, unified program में जोड़ता है, जो symbolic references को सॉल्व करता है.

Dynamic linking कई ऑपरेटिंग सिस्टम पर उपलब्ध है जो एक समान प्रक्रिया है, जो प्रोग्राम के execute होने तक कुछ प्रतीकों के सलूशन को पोस्टपॉन्ड कर देती है।

जब प्रोग्राम चलाया जाता है, तो ये डायनेमिक Link लाइब्रेरी लोड किए जाते हैं, साथ ही। डायनामिक लिंकिंग के लिए Linkerकी आवश्यकता नहीं होती है.

अधिकांश Linux system के साथ बंडल किए गए Linker को ld कहा जाता है.

कुछ कार्यक्रम हैं जो इसके आकार के बड़े हैं और एक साथ एक ही समय में Execute नहीं किए जा सकते हैं। ऐसे programs को subprograms मतलब छोटे छोटे programs में विभाजित किया जाता है.

जिन्हें Module के रूप में भी जाना जाता है। Linker का उपयोग ऐसे छोटे programs को जोड़ने के लिए किया जाता है जो एक बड़े programs को बनाते हैं.

What-is-linker-in-hindi

Linker को Link Editor भी कहा जाता है।

लिंकिंग एक फ़ाइल में कोड और डेटा के टुकड़े को इकट्ठा करने और उसमे बनाए रखने की प्रक्रिया है. Linkerएक विशेष मॉड्यूल को सिस्टम लाइब्रेरी में भी Link करता है.

यह कोड के रूप में assembler से object modules लेता है और लोडर के आउटपुट के रूप में एक Executable file बनाता है.

दोनों compile समय के दौरान लिकिंग की जाती है, पहला जब स्रोत कोड को मशीन कोड और लोड समय में ट्रांसलेट किया जाता है, दूसरा जब लोडर द्वारा प्रोग्राम को मेमोरी में लोड किया जाता है.

लिंकिंग सबसे आखरी स्टेप में की जाती है जब भी किसी प्रोग्राम को compile किया जाता है.

आप ऊपर दी गयी इमेज को देखकर आप समझ सकते है आखिर एक प्रोग्राम कैसे काम करता है? और किन किन स्टेप से गुजरता है. एक प्रोग्राम "source code> compiler>object code>linker>executable file>loader> memory" इतने स्टेप्स से गुजरता है.

Linking दो तरह की होती है.

  • Static Linking
  • Dynamic linking

l

Static Linking क्या है? (What is Static Linking in Hindi)

यह source program के compile होने के दौरान किया जाता है. static linking में execution से पहले Linking किया जाता है। यह दुबारा निर्धारित की गयी Object file और command-line argument का कलेक्शन लेता है.

और पूरी तरह से Link की गई Object file उत्पन्न करता है जिसे लोड और रन किया जा सकता है.

Static Linker दो प्रमुख कार्य करते हैं:

  • Symbol resolution
  • Relocation

l

Linker प्रोग्राम में उपयोग की जाने वाली सभी लाइब्रेरी रूटीन को Executable image में कॉपी करता है. इसलिए, इसे ज्यादा मेमोरी स्पेस की आवश्यकता होती है.

इसे चलाने पर सिस्टम पर लाइब्रेरी की आवश्यकता नहीं होती है। इसलिए, यह तेज और अधिक पोर्टेबल है। No failure chance and less Error chance.

Linker सभी लाइब्रेरी रूटीन को कॉपी करता है.

Dynamic Linking क्या है? (What is Static Linking in Hindi)

Dynamic linking में कोड को एक ऐसे रूप में compile और Link करना होता है जो कि Run time के साथ-साथ Link टाइम के अनुसार प्रोग्राम द्वारा लोड किया जा सकता हो.

रन टाइम उन्हें साधारण ऑब्जेक्ट फ़ाइलों से अलग करता है. विभिन्न ऑपरेटिंग सिस्टम के ऐसे loadable (लोड करने योग्य) कोड के लिए अलग-अलग नाम हैं:

  • UNIX: Sharable Libraries
  • Windows: Dynamic Link Libraries (DLL)

l

रन टाइम के दौरान डायनामिक लिंकिंग की जाती है. Executable image में एक shareable (शेयर करने योग्य) लाइब्रेरी का नाम रखकर इस लिंकिंग को पूरा किया जाता है.

error and failure की संभावना अधिक है। इसे कम मेमोरी स्पेस की आवश्यकता होती है. क्योंकि कई प्रोग्राम लाइब्रेरी की एक कॉपी शेयर कर सकते हैं. यहां हम कोड शेयरिंग कर सकते हैं.

Conclusion

आज हमने जाना कि लिंकर क्या है? (What is linker in Hindi) और Static Linking क्या है?, Dynamic Linking क्या है?

इसके बारे में हमने एक बेसिक जानकारी प्राप्त की है वो भी एक दम सरल भाषा में.

उम्मीद है आपको ये जानकारी पसंद आयी होगी. इसलिए इसे अपने दोस्तों के साथ शेयर जरूर करे. अगली पोस्ट आपको किस टॉपिक पर चाहिए आप ये कमेंट में बता सकते है.

मेरा नाम रोहित शुक्ला है. मैं एक Blogger, Affiliate marketer और HindiWorld.net का फाउंडर हु. इस ब्लॉग में मैं प्रोग्रामिंग भाषा (C, C++, Java, Python, Javascript etc.) से रिलेटेड जानकारी हिंदी भाषा में शेयर करता हूँ.

Leave a Comment