c++ - रथम - सार्वजनिक पुस्तकालय का पूर्ण व्यय किसके द्वारा किया जाता है




स्थिर पुस्तकालय निर्भरता को कैसे जोड़ते हैं? (2)

एक स्थैतिक पुस्तकालय अनलिंक बाइनरी ऑब्जेक्ट फाइलों (*। या * .obj) का एक साधारण संग्रह है, जब संग्रह को संकलित किया जाता है, निर्भरता के लिए कोई भी जांच नहीं की जाती है। जब कोई एक के बाइनरी निष्पादन योग्य (या साझा लाइब्रेरी / डीएलएल) को जोड़ता है तो लिंकर सभी आवश्यक निर्भरता के लिए जांच करता है और उसके बाद ही आपको किसी भी मुद्दे पर चेतावनी देगा।

कहें कि मेरे पास लिबाज़ है I यह उदाहरण के लिए निर्भर करता है उदाहरण के लिए सरल तथ्य के लिए कि libA के गैर इनलाइन विधि को libSomething.h में किसी विधि को कॉल करता है। इस मामले में निर्भरता कैसे जुड़ती है? क्या libA को statically comps के साथ libSomething से लिंक करना है, या libA (libA का उपयोग करने वाला अनुप्रयोग) के उपयोगकर्ता को दोनों libA और libSomething से लिंक करने की आवश्यकता होगी?

धन्यवाद


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

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

कुछ कंपलर निर्भरता सूची उत्पन्न कर सकते हैं, आमतौर पर एक बिल्ड प्रक्रिया में उपयोग के लिए। हालांकि, अंतिम जिम्मेदारी प्रोग्रामर पर निर्भर है।






static-libraries