मैं वर्तमान में AIX में C अनुप्रयोग पोर्ट करने का प्रयास कर रहा हूं और भ्रमित हो रहा हूं। किसी एप्लिकेशन को बनाते / चलाते समय .a और .so फाइलें क्या हैं और उनका उपयोग कैसे किया जाता है?
मैं वर्तमान में AIX में C अनुप्रयोग पोर्ट करने का प्रयास कर रहा हूं और भ्रमित हो रहा हूं। किसी एप्लिकेशन को बनाते / चलाते समय .a और .so फाइलें क्या हैं और उनका उपयोग कैसे किया जाता है?
जवाबों:
आर्काइव लाइब्रेरीज़ (.A) स्टेटिकली लिंक्ड हैं यानी जब आप gcc में -c ऑप्शन के साथ अपना प्रोग्राम कंपाइल करते हैं। इसलिए, यदि लाइब्रेरी में कोई बदलाव है, तो आपको अपने कोड को फिर से संकलित करने और बनाने की आवश्यकता है।
.So लाइब्रेरी पर .so (शेयर्ड ऑब्जेक्ट) का लाभ यह है कि वे रनटाइम के दौरान जुड़े होते हैं अर्थात gcc में आपकी .o फ़ाइल -o विकल्प के निर्माण के बाद। इसलिए, अगर .so फ़ाइल में कोई परिवर्तन होता है, तो आपको अपने मुख्य कार्यक्रम को फिर से स्थापित करने की आवश्यकता नहीं है। लेकिन यह सुनिश्चित करें कि आपका मुख्य प्रोग्राम नए .so फ़ाइल से ln कमांड से जुड़ा हो।
यह आपको .so फ़ाइलों के निर्माण में मदद करेगा। http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
उम्मीद है की यह मदद करेगा।
pic(स्वतंत्र कोड स्थिति) से संबंधित है ?
.a स्थिर पुस्तकालय हैं। यदि आप उनके अंदर संग्रहीत कोड का उपयोग करते हैं, तो यह उनसे लिया गया है और आपके अपने बाइनरी में एम्बेडेड है। Visual Studio में, ये .lib फ़ाइलें होंगी।
.so गतिशील पुस्तकालय हैं। यदि आप उनके अंदर संग्रहीत कोड का उपयोग करते हैं, तो इसे अपने बाइनरी में नहीं लिया जाता है और एम्बेड नहीं किया जाता है। इसके बजाय यह सिर्फ संदर्भित है, इसलिए बाइनरी उन पर निर्भर करेगा और रनटाइम पर लोड की गई फ़ाइल से कोड जोड़ा / लोड किया गया है। विजुअल स्टूडियो / विंडोज में ये .dll फाइलें (छोटी .lib फाइलें जिनके साथ लिंकिंग जानकारी होती है) होगी।
.libफ़ाइल को .dllआयात लाइब्रेरी कहा जाता है।
.A फाइलें आमतौर पर लाइब्रेरीज़ होती हैं, जो स्टैटिकली लिंक्ड (या अधिक सटीक आर्काइव) प्राप्त करती हैं, और।
डायनॉमिकली लिंक्ड लाइब्रेरियाँ होती हैं।
पोर्ट करने के लिए आपको स्रोत कोड की आवश्यकता होगी जो उन्हें बनाने के लिए संकलित किया गया था, या आपकी AIX मशीन पर समतुल्य फाइलें।
उनका उपयोग लिंकिंग चरण में किया जाता है। .aफाइलें स्टेटिकली लिंक्ड होती हैं, और .soफाइल्स एक-दूसरे से जुड़ी होती हैं, ताकि जब भी आप exe को रन करें तो लाइब्रेरी की जरूरत हो।
आप पा सकते हैं कि वे कहाँ से किसी भी तरह की लीबी डाइरेक्टरीज़ को देख कर स्टोर किए गए हैं ... /usr/libऔर /libउनमें से अधिकांश हैं, और LIBRARY_PATHपर्यावरण चर भी है ।
इस जानकारी के लिए विकिपीडिया एक अच्छा स्रोत है।
स्थिर पुस्तकालय फ़ाइलों की तरह ए पढ़ के बारे में जानने के लिए स्टेटिक libarary
साझा लाइब्रेरी फ़ाइलों के बारे में जानने के लिए .so पढ़े लाइब्रेरी_ (कंप्यूटिंग) # शेडिंग_ लाइब्रेरीज़ इस पृष्ठ पर, फ़ाइल नामकरण अनुभाग में उपयोगी जानकारी भी है ।
archive और अन्य हैsharedobject