हां, आपको स्थिर रूप से जुड़े निष्पादन योग्य बनाने के लिए स्थिर पुस्तकालयों की आवश्यकता है।
स्टेटिक पुस्तकालय संकलित वस्तुओं के बंडल हैं। जब आप स्थाई रूप से लाइब्रेरी से लिंक करते हैं, तो यह प्रभावी रूप से उसी लाइब्रेरी के संकलन परिणामों को लेने, उन्हें अपने वर्तमान प्रोजेक्ट में अनपॅक करने और उन्हें उपयोग करने जैसा ही होता है जैसे कि वे आपकी खुद की वस्तुएं हैं।
गतिशील पुस्तकालय पहले से ही जुड़े हुए हैं। इसका मतलब है कि स्थानान्तरण जैसी कुछ जानकारी पहले ही तय की जा चुकी है और बाहर फेंक दी गई है।
इसके अतिरिक्त, गतिशील पुस्तकालयों को स्थिति-स्वतंत्र कोड के रूप में संकलित किया जाना चाहिए। यह स्थैतिक पुस्तकालयों पर प्रतिबंध नहीं है, और कुछ सामान्य प्लेटफ़ॉर्म (जैसे x86) पर प्रदर्शन में महत्वपूर्ण अंतर होता है।
ELF Statifier जैसे उपकरण मौजूद हैं जो डायनेमिकली-लिंक्ड लाइब्रेरी को गतिशील रूप से जुड़े निष्पादन योग्य में बंडल करने का प्रयास करते हैं, लेकिन सभी परिस्थितियों में सही तरीके से काम करने का परिणाम उत्पन्न करना बहुत मुश्किल है।
एक महान उत्तर के लिए धन्यवाद। लेकिन यह इतना मुश्किल क्यों है? –
ईएलएफ स्टेटफियर निष्पादन योग्य और उसके सभी पुस्तकालयों को लोड करता है, फिर प्रक्रिया मेमोरी का एक स्नैपशॉट लेता है। जब आउटपुट छवि चलती है, तो कुछ भी जो स्मृति लेआउट को बदलने के लिए कारण बनता है (उदा। यादृच्छिक वीडीएसओ) के परिणामस्वरूप गलत ऑपरेशन होगा। किसी भी अन्य दृष्टिकोण के लिए गतिशील लिंकर का पुन: आविष्कार करना आवश्यक है। – ephemient
डायनामिक लिंकर को फिर से कार्यान्वित करना मुश्किल क्यों होगा? लाइब्रेरी के आयात और निर्यात के दो टेबल नहीं हैं, जिन्हें स्थानांतरित किया जा सकता है? यह लिंकर है, इसलिए यह पहले से ही एक स्थिर लिंकर लागू कर रहा है, और यह निष्पादन योग्य और गतिशील लाइब्रेरी, आदि के फ़ाइल प्रारूप को जानता है। – ChrisW