.So, .la और .a लाइब्रेरी फ़ाइलों के बीच अंतर क्या है?


230

मुझे पता है कि एक .soफ़ाइल एक प्रकार की डायनेमिक लाइब्रेरी है (बहुत सारे थ्रेड ऐसे पुस्तकालयों को साझा कर सकते हैं ताकि स्मृति में इसकी एक से अधिक प्रति होने की आवश्यकता न हो)। लेकिन मध्य क्या अंतर है .aऔर .la? क्या ये सभी स्थिर पुस्तकालय हैं?

यदि डायनेमिक लिबास में स्थैतिक लोगों के लिए बड़े फायदे हैं, तो अभी भी बहुत सारे स्थिर पुस्तकालय क्यों हैं?

मैं पुस्तकालयों (दोनों प्रकार) को लोड करने के लिए अंतर्निहित तंत्र को भी जानना चाहता हूं और एक परिवाद में कोड का एक टुकड़ा कैसे लागू किया जाता है जब इसे कहीं इस्तेमाल किया जाता है। कर्नेल के किस भाग का मुझे अध्ययन करना चाहिए? और क्या संबंधित लिनक्स कमांड / उपयोगिता मुझे पता होना चाहिए कि एक प्रक्रिया कैसे चल रही है? (मैं अब तक केवल ldकमांड जानता हूं )

मुझे कब .soया में कोड बनाने की कोशिश करनी चाहिए .a? इनमे से कौन बेहतर है?

[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l
total 96
-rw-r--r-- 1 mirror mirror 22892 Sep  2 23:25 openvpn-plugin-auth-pam.a
-rwxr-xr-x 1 mirror mirror   931 Sep  2 23:25 openvpn-plugin-auth-pam.la
-rwxr-xr-x 1 mirror mirror 23621 Sep  2 23:25 openvpn-plugin-auth-pam.so
-rw-r--r-- 1 mirror mirror 17228 Sep  2 23:25 openvpn-plugin-down-root.a
-rwxr-xr-x 1 mirror mirror   932 Sep  2 23:25 openvpn-plugin-down-root.la
-rwxr-xr-x 1 mirror mirror 18805 Sep  2 23:25 openvpn-plugin-down-root.so

इसके अलावा autotools.io/libtool/lafiles.html
Pacerier

जवाबों:


306

.soफाइलें गतिशील पुस्तकालय हैं । प्रत्यय "साझा किए गए ऑब्जेक्ट" के लिए खड़ा है, क्योंकि लाइब्रेरी से जुड़े सभी एप्लिकेशन एक ही फ़ाइल का उपयोग करते हैं, बजाय परिणामी निष्पादन में प्रतिलिपि बनाने के।

.aफाइलें स्टैटिक लाइब्रेरी हैं । प्रत्यय "संग्रह" के लिए खड़ा है, क्योंकि वे वास्तव में सिर्फ एक संग्रह है ( arकमांड के साथ बनाया गया है - जो tarकि पूर्ववर्ती लाइब्रेरी का उपयोग करने के लिए अब सिर्फ पुस्तकालयों के लिए उपयोग किया जाता है)।

.laफाइलें GNU "libtools" पैकेज द्वारा उपयोग की जाने वाली पाठ फाइलें हैं जो संबंधित लाइब्रेरी को बनाने वाली फ़ाइलों का वर्णन करती हैं। आप इस प्रश्न में उनके बारे में अधिक जानकारी प्राप्त कर सकते हैं: libtool's .la फ़ाइल किस लिए हैं?

स्थिर और गतिशील पुस्तकालयों में प्रत्येक के पक्ष और विपक्ष हैं।

स्टेटिक प्रो: उपयोगकर्ता हमेशा उस लाइब्रेरी के संस्करण का उपयोग करता है जिसे आपने अपने आवेदन के साथ परीक्षण किया है, इसलिए किसी भी तरह की आश्चर्यजनक संगतता समस्या नहीं होनी चाहिए।

स्टेटिक कॉन: यदि किसी लाइब्रेरी में कोई समस्या तय हो जाती है, तो आपको इसका लाभ उठाने के लिए अपने एप्लिकेशन को फिर से वितरित करना होगा। हालाँकि, जब तक कि यह एक पुस्तकालय नहीं है जो उपयोगकर्ताओं को अपने दम पर अपडेट करने की संभावना है, आपको वैसे भी ऐसा करने की आवश्यकता होगी।

डायनेमिक प्रो: आपकी प्रक्रिया की मेमोरी फ़ुटप्रिंट छोटी होती है, क्योंकि लाइब्रेरी के लिए उपयोग की जाने वाली मेमोरी को लाइब्रेरी का उपयोग करके सभी प्रक्रियाओं के बीच परिशोधन किया जाता है।

डायनेमिक प्रो: रन समय पर मांग पर पुस्तकालयों को लोड किया जा सकता है; यह प्लगइन्स के लिए अच्छा है, इसलिए आपको सॉफ़्टवेयर को संकलित और स्थापित करते समय उपयोग किए जाने वाले प्लगइन्स को चुनना नहीं है। फ्लाई पर नए प्लगइन्स जोड़े जा सकते हैं।

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

डायनेमिक लाइब्रेरी विशेष रूप से सिस्टम लाइब्रेरी के लिए उपयोगी होती हैं, जैसे libc। इन पुस्तकालयों में अक्सर ऐसे कोड शामिल करने की आवश्यकता होती है जो विशिष्ट OS और संस्करण पर निर्भर होते हैं, क्योंकि कर्नेल इंटरफेस बदल गए हैं। यदि आप किसी प्रोग्राम को स्टैटिक सिस्टम लाइब्रेरी से लिंक करते हैं, तो यह केवल उस OS के संस्करण पर चलेगा जिसके लिए यह लाइब्रेरी संस्करण लिखा गया था। लेकिन यदि आप एक गतिशील पुस्तकालय का उपयोग करते हैं, तो यह आपके द्वारा संचालित सिस्टम पर स्थापित पुस्तकालय को स्वचालित रूप से उठाएगा।


1
@ बर्मन, तो आप कह रहे हैं कि स्थिर पुस्तकालयों के फायदे गतिशील पुस्तकालयों के लाभ से अधिक हैं?
3

4
@ स्पेसर मुझे नहीं पता कि आपको वह कहाँ से मिला है।
बमर

13
यह एक अर्थहीन प्रश्न है। पेशेवरों और विपक्षों का वजन परिस्थितियों पर निर्भर करता है, कोई सार्वभौमिक जवाब नहीं है। ऐसा लगता है जैसे आपका कोई एजेंडा है, और आप मुझे तंग करने की कोशिश कर रहे हैं।
बमर

3
@ बरमार, नप मैं निर्दोष हूं। बस एक जिज्ञासु-एर।
पचेरियर

11
एक अन्य कारक लाइसेंसिंग है - एलजीपीएल को वाणिज्यिक संदर्भ में गतिशील लिंकिंग की आवश्यकता होती है, अर्थात जहां आप अपने स्रोत को वितरित नहीं करना चाहते हैं।
सैम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.