C .a और .so फ़ाइल के बीच अंतर क्या है?


जवाबों:


54

एक .aफाइल एक स्टैटिक लाइब्रेरी है, जबकि एक .soफाइल विंडोज पर DLL के समान एक साझा ऑब्जेक्ट (डायनामिक) लाइब्रेरी है। इस पृष्ठ पर दोनों के बीच अंतर के बारे में कुछ विस्तृत जानकारी है ।


18
.aकेवल संकलन के दौरान एक कार्यक्रम के भाग के रूप में शामिल किया जा सकता है। .soएक कार्यक्रम लोड होने पर "आयात" किया जा सकता है।
LawrenceC

2
.a क्या है?
hfrmobile

2
@hfrmobile संग्रह के लिए खड़ा है - एक स्थिर पुस्तकालय arउपयोगिता का उपयोग करके बनाई गई ऑब्जेक्ट फ़ाइलों का एक संग्रह है । अधिक जानकारी यहाँ
ajk

28

अनुसरण के रूप में, .a फ़ाइल "ar" संग्रह है। टार संग्रह के विपरीत, यह .o या ऑब्जेक्ट फ़ाइलों को संग्रहीत करता है, जिससे उन्हें संग्रह से बाहर निकाला जा सकता है, और अन्य चीजों के बीच एक कार्यक्रम में जोड़ा जा सकता है। यदि आप चाहते हैं तो आप अन्य फ़ाइलों को संग्रहीत करने के लिए ar का उपयोग कर सकते हैं।

आप उदाहरण के लिए, -t पैरामीटर के साथ एक ar फ़ाइल के सदस्यों की एक सूची प्राप्त कर सकते हैं:

ar -t /usr/lib/libc.a

.So फ़ाइल एक "साझा ऑब्जेक्ट" फ़ाइल है, और इसमें लिंकर के लिए बहुत अधिक जानकारी उपलब्ध है ताकि सदस्यों को लोडिंग प्रोग्राम से जितनी जल्दी हो सके लिंक किया जा सके।

उदाहरण के लिए, कोशिश करें:

objdump -T /lib/libc-2.11.1.so

(या आपके / lib निर्देशिका में जो भी libc.so का संस्करण है।) ध्यान दें कि .so फ़ाइल में एक लिंकर स्क्रिप्ट भी हो सकती है, जो इसे फ़ाइल को कहीं और खोजने के लिए या किसी अन्य चीज़ का उपयोग करने के लिए निर्देशित करती है।

दिलचस्प बात यह है कि एक .so फ़ाइल एक पूर्ण विकसित प्रोग्राम भी हो सकती है। उदाहरण के लिए, /lib/libc.so.6 चलाने की कोशिश कर रहा है । (दुख की बात है कि यह अंतिम भाग अधिक आधुनिक प्रणालियों पर काम नहीं करता है। ऐसा नहीं है कि यह एक बहुत बड़ी क्षति है।)


टाइपो। आप लिखने का मतलब है ar -t /usr/lib/libc.a। वास्तव -में इस मामले में आवश्यक प्रतीत नहीं होता है। इसके अलावा /lib/libc.so.6.सिर्फ कुछ आउटपुट प्रिंट करता है। मुझे नहीं पता कि क्या मैं इसे कॉल करूंगा full fledged program
फहीम मीठा

1
यह इस अर्थ में एक पूर्ण विकसित कार्यक्रम है कि इसे खोजने के लिए निष्पादन के लिए एक मुख्य प्रतीक है।
हैक देखा

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