स्टेटिक लाइब्रेरी: Difference between revisions

From Vigyanwiki
(Created page with "{{refimprove|date=October 2013}} कंप्यूटर विज्ञान में, एक स्थैतिक पुस्तकालय या स्थिर-...")
 
No edit summary
Line 1: Line 1:
{{refimprove|date=October 2013}}
{{refimprove|date=October 2013}}
[[कंप्यूटर विज्ञान]] में, एक स्थैतिक पुस्तकालय या स्थिर-लिंक्ड पुस्तकालय दिनचर्या, बाहरी कार्यों और चर का एक सेट है, जो संकलन-समय पर एक कॉलर में हल किया जाता है और एक [[संकलक]], [[लिंकर (कंप्यूटिंग)]], या बाइंडर द्वारा लक्ष्य अनुप्रयोग में कॉपी किया जाता है। एक [[वस्तु फ़ाइल]] और एक [[स्टैंडअलोन कार्यक्रम]] बनाना | स्टैंड-अलोन [[निष्पादन]] योग्य।<ref name="Static Libraries"/>यह निष्पादन योग्य और इसे संकलित करने की प्रक्रिया दोनों को प्रोग्राम के [[स्थिर निर्माण]] के रूप में जाना जाता है। ऐतिहासिक रूप से, पुस्तकालय केवल स्थिर हो सकते हैं। स्थैतिक पुस्तकालयों को या तो अन्य स्थिर पुस्तकालयों और वस्तु फ़ाइलों के साथ विलय कर दिया जाता है, निर्माण/लिंकिंग के दौरान एक निष्पादन योग्य या रन टाइम (प्रोग्राम लाइफसाइकिल चरण) पर लोड किया जाता है। रन-टाइम उनके संबंधित निष्पादन योग्य के [[पता स्थान]] में स्थिर मेमोरी आवंटन पर निर्धारित किया जाता है। संकलन-समय / लिंक-समय।
[[कंप्यूटर विज्ञान]] में, एक स्थैतिक पुस्तकालय या स्थिर-जुड़े हुए पुस्तकालय दिनचर्या, बाहरी कार्यों और चर का एक संग्रह है, जो संकलन-समय पर एक आगंतुक में हल किया जाता है और एक [[संकलक]], [[लिंकर (कंप्यूटिंग)]], या [[संकलक|बंधक]] द्वारा लक्ष्य अनुप्रयोग में अनुकरण करके एक [[वस्तु फ़ाइल]] और एक [[स्टैंडअलोन कार्यक्रम|स्टैंडअलोन]] [[निष्पादन]] बनाना है|<ref name="Static Libraries"/>यह निष्पादन योग्य और इसे संकलित करने की प्रक्रिया दोनों को योजना के [[स्थिर निर्माण]] के रूप में जाना जाता है। ऐतिहासिक रूप से, पुस्तकालय केवल स्थिर हो सकते हैं। स्थैतिक पुस्तकालयों को या तो अन्य स्थिर पुस्तकालयों और वस्तु फ़ाइलों के साथ विलय कर दिया जाता है,या फिर निर्माण/जोड़ने के दौरान एक निष्पादन योग्य या क्रम (योजना जीवन चक्र चरण) पर लोड किया जाता है। क्रम उनके संबंधित निष्पादन योग्य के [[पता स्थान]] में स्थिर मेमोरी आवंटन संकलन-समय / संपर्क-समय पर निर्धारित किया जाता है।  


== फायदे और नुकसान ==
== फायदे और नुकसान ==
लाइब्रेरियों को डायनामिक रूप से लिंक करने के बजाय निष्पादन योग्य के साथ स्थिर रूप से जोड़ने के कई फायदे हैं। सबसे महत्वपूर्ण लाभ यह है कि एप्लिकेशन निश्चित हो सकता है कि उसके सभी पुस्तकालय मौजूद हैं और वे सही संस्करण हैं। यह निर्भरता की समस्याओं से बचा जाता है, जिसे बोलचाल की भाषा में DLL नर्क या अधिक सामान्यतः [[निर्भरता नरक]] के रूप में जाना जाता है। स्टेटिक लिंकिंग भी एप्लिकेशन को एक निष्पादन योग्य फ़ाइल में समाहित करने की अनुमति दे सकता है, वितरण और स्थापना को सरल बना सकता है।
पुस्तकालयों को गतिशील रूप से जोड़ने के बजाय निष्पादन योग्य के साथ स्थिर रूप से जोड़ने के अत्यधिक फायदे हैं। सबसे महत्वपूर्ण लाभ यह है कि एप्लिकेशन निश्चित हो सकता है कि उसके सभी पुस्तकालय उपस्थित हैं और वे सही संस्करण हैं। इससे निर्भरता की समस्याओं से बचा जाता है, जिसे बोलचाल की भाषा में गतिक कड़ी संग्रह नर्क या अधिक सामान्यतः [[निर्भरता नरक]] के रूप में जाना जाता है। स्थिर जुड़ाव भी एप्लिकेशन को एक निष्पादन योग्य फ़ाइल में समाहित करने की अनुमति दे सकता है, वितरण और स्थापना को सरल बना सकता है।  


स्टैटिक लिंकिंग के साथ, यह लाइब्रेरी के उन हिस्सों को शामिल करने के लिए पर्याप्त है जो लक्ष्य निष्पादन योग्य (या लक्षित लाइब्रेरी) द्वारा प्रत्यक्ष और अप्रत्यक्ष रूप से संदर्भित हैं। गतिशील पुस्तकालयों के साथ, संपूर्ण पुस्तकालय लोड हो जाता है, क्योंकि यह पहले से ज्ञात नहीं है कि कौन से कार्यों को अनुप्रयोगों द्वारा लागू किया जाएगा। व्यवहार में यह लाभ महत्वपूर्ण है या नहीं यह पुस्तकालय की संरचना पर निर्भर करता है।
स्थिर जुड़ाव के साथ, यह पुस्तकालय के उन हिस्सों को सम्मिलित करने के लिए पर्याप्त है जो लक्ष्य निष्पादन योग्य (या लक्षित पुस्तकालय) द्वारा प्रत्यक्ष और अप्रत्यक्ष रूप से संदर्भित हैं। गतिशील पुस्तकालयों के साथ, संपूर्ण पुस्तकालय भर दिया जाता है, क्योंकि यह पहले से ज्ञात नहीं है कि कौन से कार्यों को अनुप्रयोगों द्वारा लागू किया जाएगा। व्यवहार में यह लाभ महत्वपूर्ण है या नहीं यह पुस्तकालय की संरचना पर निर्भर करता है।  


स्टैटिक लिंकिंग में, निष्पादन योग्य का आकार [[गतिशील लिंकिंग]] की तुलना में अधिक हो जाता है, क्योंकि लाइब्रेरी कोड अलग-अलग फाइलों के बजाय निष्पादन योग्य के भीतर संग्रहीत होता है। लेकिन अगर लाइब्रेरी फाइलों को एप्लिकेशन के हिस्से के रूप में गिना जाता है तो कुल आकार समान होगा, या इससे भी छोटा होगा यदि कंपाइलर अप्रयुक्त प्रतीकों को हटा देता है।
स्थिर क्क् में, निष्पादन योग्य का आकार [[गतिशील लिंकिंग|गतिशील]] जुड़ाव की तुलना में अधिक हो जाता है, क्योंकि पुस्तकालय कोड अलग-अलग फाइलों के बजाय निष्पादन योग्य के भीतर संग्रहीत होता है। लेकिन अगर पुस्तकालय फाइलों को प्रार्थना पत्र के हिस्से के रूप में गिना जाता है तो कुल आकार समान होगा, या इससे भी छोटा होगा यदि [[संकलक]] अप्रयुक्त प्रतीकों को हटा देता है।  


=== पर्यावरण विशिष्ट ===
=== पर्यावरण विशिष्ट ===
[[Microsoft Windows]] पर एप्लिकेशन के साथ आवश्यक लाइब्रेरी फ़ाइलों को शामिल करना आम बात है।<ref name="endofdllhell">{{cite web
[[Microsoft Windows|माइक्रोसॉफ्ट विंडोज]] पर एप्लिकेशन के साथ आवश्यक पुस्तकालय फ़ाइलों को सम्मिलित करना सामान्य बात है। <ref name="endofdllhell">{{cite web
| url=http://msdn.microsoft.com/library/techart/dlldanger1.htm
| url=http://msdn.microsoft.com/library/techart/dlldanger1.htm
| title=The End of DLL Hell
| title=The End of DLL Hell
Line 21: Line 21:
| accessdate=2013-08-31
| accessdate=2013-08-31
| quote=''Private DLLs are DLLs that are installed with a specific application and used only by that application.''
| quote=''Private DLLs are DLLs that are installed with a specific application and used only by that application.''
}}</ref> यूनिक्स जैसी प्रणालियों पर यह कम आम है क्योंकि [[पैकेज प्रबंधन प्रणाली]] का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि सही पुस्तकालय फाइलें उपलब्ध हैं। यह लाइब्रेरी फ़ाइलों को अंतरिक्ष बचत के लिए अग्रणी कई अनुप्रयोगों के बीच साझा करने की अनुमति देता है। यह लाइब्रेरी का उपयोग करने वाले एप्लिकेशन को अपडेट किए बिना बग और सुरक्षा खामियों को ठीक करने के लिए लाइब्रेरी को अपडेट करने की अनुमति देता है। व्यवहार में, कई निष्पादक (विशेष रूप से माइक्रोसॉफ्ट विंडोज को लक्षित करने वाले) स्थिर और गतिशील दोनों पुस्तकालयों का उपयोग करते हैं।
}}</ref> यूनिक्स जैसी प्रणालियों पर यह कम सामान्य है क्योंकि [[पैकेज प्रबंधन प्रणाली|पैकेट प्रबंधन प्रणाली]] का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि सही पुस्तकालय फाइलें उपलब्ध हैं। यह पुस्तकालय फ़ाइलों को अंतरिक्ष बचत के लिए अग्रणी कई अनुप्रयोगों के बीच साझा करने की अनुमति देता है। यह पुस्तकालय का उपयोग करने वाले एप्लिकेशन को अद्यतन किए बिना वायरस और सुरक्षा खामियों को ठीक करने के लिए पुस्तकालय को आधुनिकतम बनाने की अनुमति देता है। व्यवहार में, कई निष्पादक (विशेष रूप से माइक्रोसॉफ्ट विंडोज को लक्षित करने वाले) स्थिर और गतिशील दोनों पुस्तकालयों का उपयोग करते हैं।  


== लिंकिंग और लोडिंग ==
== लिंकिंग और लोडिंग ==
कोई भी स्टैटिक लाइब्रेरी फंक्शन किसी अन्य स्टैटिक लाइब्रेरी में फंक्शन या प्रक्रिया को कॉल कर सकता है। लिंकर (कंप्यूटिंग) और लोडर इसे उसी तरह से संभालते हैं जैसे अन्य ऑब्जेक्ट फ़ाइलों के प्रकार के लिए। स्टेटिक लाइब्रेरी फ़ाइलों को [[लिंकिंग लोडर]] (जैसे, [[एक्स विंडो सिस्टम]] मॉड्यूल लोडर) द्वारा रन टाइम (प्रोग्राम जीवनचक्र चरण) में जोड़ा जा सकता है। हालांकि, इस तरह की प्रक्रिया को स्टेटिक लिंकिंग कहा जा सकता है या नहीं यह विवादास्पद है।
कोई भी स्थिर पुस्तकालय कार्य किसी अन्य स्थिर पुस्तकालय में कार्य या प्रक्रिया को निर्देशित कर सकता है। श्रृंखलक (कंप्यूटिंग) और लोडर इसे उसी तरह से संभालते हैं जैसे अन्य श्रृंखलक फ़ाइलों के प्रकार के लिए करते हैं।  स्थिर पुस्तकालय फ़ाइलों को [[लिंकिंग लोडर]] (जैसे, [[एक्स विंडो सिस्टम]] मापांक लोडर) द्वारा क्रम (योजना जीवनचक्र चरण) में जोड़ा जा सकता है। यद्दपि, इस तरह की प्रक्रिया को स्थोर जुड़ाव कहा जा सकता है या नहीं यह विवादास्पद है।  


== सी/[[सी ++]] == में स्थिर पुस्तकालय बनाना
<big>'''<u>सी/[[सी ++]] में स्थिर पुस्तकालय बनाना</u>'''</big>
स्थैतिक पुस्तकालयों को C (प्रोग्रामिंग भाषा) या C++ में आसानी से बनाया जा सकता है। अन्य सुविधाओं को प्रदान करने के अलावा, ये दो भाषाएं बाहरी या आंतरिक लिंकेज को इंगित करने के लिए सी | स्टोरेज-क्लास विनिर्देशक में स्टोरेज कक्षाएं प्रदान करती हैं। ऐसी लाइब्रेरी बनाने के लिए, निर्यात किए गए कार्यों/प्रक्रियाओं और अन्य ऑब्जेक्ट चर को बाहरी लिंकेज के लिए निर्दिष्ट किया जाना चाहिए (यानी सी स्टेटिक (कीवर्ड) का उपयोग न करके |<code>static</code> कीवर्ड)। स्टेटिक लाइब्रेरी फ़ाइलनाम में आमतौर पर{{mono|.a}}यूनिक्स जैसी प्रणालियों पर विस्तार<ref name="Static Libraries">{{cite web|title=Static Libraries|url=http://tldp.org/HOWTO/Program-Library-HOWTO/static-libraries.html|publisher=TLDP|accessdate=3 October 2013}}</ref> और{{mono|.lib}}Microsoft Windows पर एक्सटेंशन।
 
स्थैतिक पुस्तकालयों को C (योजना भाषा) या C++ में सरलता से बनाया जा सकता है। अन्य सुविधाओं को प्रदान करने के अलावा, ये दो भाषाएं बाहरी या आंतरिक कड़ी को इंगित करने के लिए स्टोरेज कक्षाएं प्रदान करती हैं। ऐसी पुस्तकालय बनाने के लिए, निर्यात किए गए कार्यों/प्रक्रियाओं और अन्य वस्तु चर को बाहरी संपर्क के लिए निर्दिष्ट किया जाना चाहिए (यानी सी स्थिर (संकेत शब्द) का उपयोग न करके | स्टेटिक पुस्तकालय फ़ाइलनाम में सामान्यत:{{mono|.a}}यूनिक्स जैसी प्रणालियों पर विस्तार<ref name="Static Libraries">{{cite web|title=Static Libraries|url=http://tldp.org/HOWTO/Program-Library-HOWTO/static-libraries.html|publisher=TLDP|accessdate=3 October 2013}}</ref> और{{mono|.lib}}Microsoft Windows पर विस्तार।


उदाहरण के लिए, यूनिक्स जैसी प्रणाली पर, नाम का एक संग्रह बनाने के लिए {{mono|libclass.a}} फाइलों से {{mono|class1.o}}, {{mono|class2.o}}, {{mono|class3.o}}, निम्न कमांड का उपयोग किया जाएगा:<ref name="Static Libraries"/>
उदाहरण के लिए, यूनिक्स जैसी प्रणाली पर, नाम का एक संग्रह बनाने के लिए {{mono|libclass.a}} फाइलों से {{mono|class1.o}}, {{mono|class2.o}}, {{mono|class3.o}}, निम्न कमांड का उपयोग किया जाएगा:<ref name="Static Libraries"/>
Line 46: Line 47:
* [[लोडर (कंप्यूटिंग)]]
* [[लोडर (कंप्यूटिंग)]]
* [[साझा पुस्तकालय]]
* [[साझा पुस्तकालय]]
* [[डायनामिक-लिंक लाइब्रेरी]] (DLL, .dll)
* [[डायनामिक-लिंक लाइब्रेरी|डायनामिक-लिंक पुस्तकालय]] (DLL, .dll)
* [[बाहरी चर]]
* [[बाहरी चर]]
* वस्तु फ़ाइल
* वस्तु फ़ाइल

Revision as of 09:30, 24 February 2023

कंप्यूटर विज्ञान में, एक स्थैतिक पुस्तकालय या स्थिर-जुड़े हुए पुस्तकालय दिनचर्या, बाहरी कार्यों और चर का एक संग्रह है, जो संकलन-समय पर एक आगंतुक में हल किया जाता है और एक संकलक, लिंकर (कंप्यूटिंग), या बंधक द्वारा लक्ष्य अनुप्रयोग में अनुकरण करके एक वस्तु फ़ाइल और एक स्टैंडअलोन निष्पादन बनाना है|[1]यह निष्पादन योग्य और इसे संकलित करने की प्रक्रिया दोनों को योजना के स्थिर निर्माण के रूप में जाना जाता है। ऐतिहासिक रूप से, पुस्तकालय केवल स्थिर हो सकते हैं। स्थैतिक पुस्तकालयों को या तो अन्य स्थिर पुस्तकालयों और वस्तु फ़ाइलों के साथ विलय कर दिया जाता है,या फिर निर्माण/जोड़ने के दौरान एक निष्पादन योग्य या क्रम (योजना जीवन चक्र चरण) पर लोड किया जाता है। क्रम उनके संबंधित निष्पादन योग्य के पता स्थान में स्थिर मेमोरी आवंटन संकलन-समय / संपर्क-समय पर निर्धारित किया जाता है।

फायदे और नुकसान

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

स्थिर जुड़ाव के साथ, यह पुस्तकालय के उन हिस्सों को सम्मिलित करने के लिए पर्याप्त है जो लक्ष्य निष्पादन योग्य (या लक्षित पुस्तकालय) द्वारा प्रत्यक्ष और अप्रत्यक्ष रूप से संदर्भित हैं। गतिशील पुस्तकालयों के साथ, संपूर्ण पुस्तकालय भर दिया जाता है, क्योंकि यह पहले से ज्ञात नहीं है कि कौन से कार्यों को अनुप्रयोगों द्वारा लागू किया जाएगा। व्यवहार में यह लाभ महत्वपूर्ण है या नहीं यह पुस्तकालय की संरचना पर निर्भर करता है।

स्थिर क्क् में, निष्पादन योग्य का आकार गतिशील जुड़ाव की तुलना में अधिक हो जाता है, क्योंकि पुस्तकालय कोड अलग-अलग फाइलों के बजाय निष्पादन योग्य के भीतर संग्रहीत होता है। लेकिन अगर पुस्तकालय फाइलों को प्रार्थना पत्र के हिस्से के रूप में गिना जाता है तो कुल आकार समान होगा, या इससे भी छोटा होगा यदि संकलक अप्रयुक्त प्रतीकों को हटा देता है।

पर्यावरण विशिष्ट

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

लिंकिंग और लोडिंग

कोई भी स्थिर पुस्तकालय कार्य किसी अन्य स्थिर पुस्तकालय में कार्य या प्रक्रिया को निर्देशित कर सकता है। श्रृंखलक (कंप्यूटिंग) और लोडर इसे उसी तरह से संभालते हैं जैसे अन्य श्रृंखलक फ़ाइलों के प्रकार के लिए करते हैं। स्थिर पुस्तकालय फ़ाइलों को लिंकिंग लोडर (जैसे, एक्स विंडो सिस्टम मापांक लोडर) द्वारा क्रम (योजना जीवनचक्र चरण) में जोड़ा जा सकता है। यद्दपि, इस तरह की प्रक्रिया को स्थोर जुड़ाव कहा जा सकता है या नहीं यह विवादास्पद है।

सी/सी ++ में स्थिर पुस्तकालय बनाना

स्थैतिक पुस्तकालयों को C (योजना भाषा) या C++ में सरलता से बनाया जा सकता है। अन्य सुविधाओं को प्रदान करने के अलावा, ये दो भाषाएं बाहरी या आंतरिक कड़ी को इंगित करने के लिए स्टोरेज कक्षाएं प्रदान करती हैं। ऐसी पुस्तकालय बनाने के लिए, निर्यात किए गए कार्यों/प्रक्रियाओं और अन्य वस्तु चर को बाहरी संपर्क के लिए निर्दिष्ट किया जाना चाहिए (यानी सी स्थिर (संकेत शब्द) का उपयोग न करके | स्टेटिक पुस्तकालय फ़ाइलनाम में सामान्यत:.aयूनिक्स जैसी प्रणालियों पर विस्तार[1] और.libMicrosoft Windows पर विस्तार।

उदाहरण के लिए, यूनिक्स जैसी प्रणाली पर, नाम का एक संग्रह बनाने के लिए libclass.a फाइलों से class1.o, class2.o, class3.o, निम्न कमांड का उपयोग किया जाएगा:[1]

ar rcs libclass.a class1.o class2.o class3.o

एक प्रोग्राम को संकलित करने के लिए जो निर्भर करता है class1.o, class2.o, और class3.o, कोई कर सकता है:

सीसी main.c libclass.a

या अगर libclass.a मानक पुस्तकालय पथ में रखा गया है, जैसे /usr/local/lib)

सीसी main.c -lclass

या (लिंकिंग के दौरान)

एलडी... मेन.ओ-एल क्लास...

के बजाय:

सीसी main.c class1.o class2.o class3.o

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 "Static Libraries". TLDP. Retrieved 3 October 2013.
  2. Anderson, Rick (2000-01-11). "The End of DLL Hell". microsoft.com. Archived from the original on 2001-06-05. Retrieved 2013-08-31. Private DLLs are DLLs that are installed with a specific application and used only by that application.