2012-03-16 16 views
7

स्थिर पुस्तकालय और पुनर्निधारणीय वस्तु फ़ाइल के बीच क्या अंतर है? या गतिशील पुस्तकालय और साझा ऑब्जेक्ट फ़ाइल के बीच।स्थैतिक पुस्तकालय और स्थानापन्न ऑब्जेक्ट फ़ाइल के बीच अंतर?

और यदि यह समान चीजें नहीं है, तो गतिशील लाइब्रेरी क्या है, जो इसके साथ लिंक करने की अनुमति देती है, लेकिन साझा ऑब्जेक्ट फ़ाइल नहीं है?

उत्तर

7

एक स्थैतिक पुस्तकालय मूल रूप से ऑब्जेक्ट फ़ाइलों का संग्रह है। यह आमतौर पर ऑब्जेक्ट फ़ाइलों का संग्रह केवल ar संग्रह है। ar का उपयोग करके, आप लाइब्रेरी से ऑब्जेक्ट फाइलों को निकाल सकते हैं, इसमें विभिन्न ऑब्जेक्ट फाइलें जोड़ सकते हैं, आदि

आम तौर पर, गतिशील लाइब्रेरी और साझा ऑब्जेक्ट फ़ाइल के बीच का अंतर लक्ष्य है - विंडोज गतिशील पुस्तकालयों, लिनक्स का उपयोग करता है साझा वस्तुओं का उपयोग करता है। उससे थोड़ा अधिक अंतर है, लेकिन पूरी तरह से नहीं।

1

गतिशील (साझा) पुस्तकालय PIC कोड का उपयोग करता है - कोड लाइब्रेरी के वास्तविक भौतिक स्थान पर ध्यान दिए बिना काम करेगा जो स्मृति में एकाधिक निष्पादन योग्य द्वारा उपयोग किया जाता है।

स्टेटिक लाइब्रेरी निष्पादन योग्य बनाने के लिए चरणबद्ध चरण के दौरान निष्पादन योग्य में जुड़े हुए हैं।

गतिशील पुस्तकालयों का लाभ स्मृति में निष्पादन योग्य का छोटा पदचिह्न है। स्थिर पुस्तकालयों का लाभ यह है कि आप सिर्फ गतिशील पुस्तकालय हैं और एक छोटे से तेजी से चलाने के लिए आवश्यकता के बिना निष्पादन वितरित कर सकते हैं और कोई प्रयास भौतिक स्मृति में कहीं भी अस्तित्व के लिए पुस्तकालय सक्षम करने के लिए आवश्यक है।

+0

लेकिन मेरे प्रश्न "लाइब्रेरी बनाम ऑब्जेक्ट फ़ाइल" के बारे में हैं और "स्थैतिक बनाम गतिशील lib" के बारे में नहीं हैं। इसके अलावा मेरी अंग्रेजी अच्छी तरह से अच्छी नहीं है :)। तो, अगर यह सब उलझन में सवाल लिखने की वजह से है - कृपया मुझे बताओ। – Jofsey

+0

एक लाइब्रेरी सिर्फ फाइलों का संग्रह है। बस यह सुनिश्चित करें कि संग्रह साझा या स्थैतिक होने के लिए है। मेरा जवाब आपको फ़ाइलों को साझा करने या स्थैतिक के बीच अंतर रखने के लिए है। –

+1

आपका जवाब लगभग हर विस्तार ;-(एक ix86 लिनक्स एक साझा गैर 'PIC' कोड से पुस्तकालयों बना सकते हैं, में सही नहीं है। स्टेटिक पुस्तकालयों '-PIC' कोड शामिल कर सकते हैं, और साझा पुस्तकालयों में जोड़ा जा सकता है। स्मृति । मुझे लगता है कि सही तरीके से यह तब होता है जब दो या अधिक प्रक्रियाओं एक ही समारोह फोन है, तो एक गतिशील में इस समारोह पैकिंग कि कहना है कि - एक निष्पादन गतिशील जोड़ने का उपयोग करने का पदचिह्न * एक है कि नहीं करता है –

0

शार्ड पुस्तकालय डिस्क स्थान को सहेजते हैं यदि उनका उपयोग एक से अधिक निष्पादन योग्य द्वारा किया जाता है। यदि एकाधिक निष्पादन योग्य है जो एक साझा lib से एक ही फ़ंक्शन का उपयोग करते हैं। प्रत्येक चल रहे हैं अपनी खुद की प्रति प्राप्त करेंगे। डिस्क पर निष्पादन योग्य भी उस फ़ंक्शन का कोड शामिल नहीं होगा बल्कि साझा lib के संदर्भ में होगा।

संबंधित मुद्दे