linker - Could .so file be linked to executable statically? -
चूंकि ऑब्जेक्ट फ़ाइल (ET_REL, * .o) में वर्ग, और गतिशील लाइब्रेरीज़ (ET_DYN, * .so) होने चाहिए सेगमेंट और सेक्शन, * तो फाइलों को स्थायी रूप से लिंक किया जा सकता है, भले ही यह गतिशील लिंकिंग के उद्देश्य से हो?
गतिशील लाइब्रेरीज़ (ईडीडीएनएन, * .एसओ) के पास दोनों खंड और खंड हैं
गतिशील पुस्तकालय आमतौर पर वर्ग हैं, लेकिन केवल इसलिए कि वे नहीं हैं छीन लिया। बहुत सारे गतिशील पुस्तकालय हैं जो नहीं के लिए कोई भी वर्ग (लाइब्रेरी के काम के लिए केवल आवश्यक हैं)।
* तो फाइलें स्थायी रूप से लिंक की जा सकती हैं, भले ही इसे गतिशील लिंकिंग के लिए लक्षित किया जाए?
नहीं अधिकांश यूनिक्स लिंकर a.out और foo.so को अंतिम लिंक उत्पादों पर विचार नहीं करते हैं, किसी भी अन्य संशोधन के लिए कोई प्रावधान नहीं।
इसमें foo.so को a.out में सैद्धांतिक रूप से संभव है, लेकिन व्यवहार में बहुत मुश्किल है।
ऐसे किसी मामले पर विचार करें जहां foo और बार और फ़ू कॉल बार को परिभाषित करता है और निर्यात करता है। मान लीजिए कि foo.so को a.out में लिंक करना संभव था, जिसका बार की एक अलग परिभाषा थी।
क्या इस मामले में क्या होना चाहिए? एक कई परिभाषा त्रुटि? foo कॉल बार अंदर foo.so ? foo कॉल बार अंदर a.out ? कुछ और? उपरोक्त सभी विकल्पों के लिए लिंकर को अब जितना जटिल हो सकता है, उतना जटिल होगा, और यह पहले से ही जटिल है।
Comments
Post a Comment