जीसीसी लिंकर के माध्यम से जेनरेट की गई हमारी ईएलएफ फाइलों में ईएलएफ फ़ाइल का शीर्ष हमेशा निष्पादन योग्य कोड का संस्करण पहचानकर्ता होता है।ईएलएफ फ़ाइल के शीर्ष पर एक प्रतीक को मजबूर करना
यह संस्करण.c फ़ाइल बनाकर और परिणामी ऑब्जेक्ट को लिंक कमांड में पहली लिंक करने योग्य ऑब्जेक्ट फ़ाइल बनाकर हासिल किया जाता है।
हालांकि एक निष्पादन योग्य के लिए यह काम करने में विफल रहा है और केवल एक ही अंतर यह है कि निष्पादन योग्य में सी और सी ++ कोड का मिश्रण होता है, और संस्करण प्रतीक कहीं और स्थानांतरित किया जा रहा है।
प्रश्न यह है कि ईएलएफ फ़ाइल में किसी प्रतीक के पूर्ण स्थान की गारंटी देने का कोई तरीका है, जैसे कि लिंक हमेशा लिंकर कमांड या कोड विशेषता निर्देशों के माध्यम से फ़ाइल के शीर्ष पर स्थित होता है?
['e_ident [EI_ABIVERSION] और e_type'] (http://en.wikipedia.org/wiki/Executable_and_Linkable_Format) के बीच 7 अप्रयुक्त बाइट्स का उपयोग करने के बारे में क्या? :) – Kamiccolo
मुझे लगता है कि आप जीएनयू लिंकर का उपयोग कर रहे हैं? यदि ऐसा है, तो यह स्क्रिप्ट के साथ आता है जिसे आपके स्वाद में बदल दिया जा सकता है। मुझे नहीं लगता कि आप एक विशिष्ट स्थान पर एक प्रतीक को मजबूर करने के लिए स्क्रिप्ट को बदल सकते हैं, हालांकि, आप एक विशेष .appversion अनुभाग बना सकते हैं और यह सुनिश्चित कर सकते हैं कि यह नया अनुभाग पहले दिखाई दे। अब मुझसे मत पूछो कि यह सब कैसे करें ... मुझे पता है कि आप इसे कर सकते हैं। –
लिंकर स्क्रिप्ट एक विकल्प प्रतीत होता है हालांकि आप कहते हैं कि यह स्पष्ट नहीं है कि आप ईएलएफ फ़ाइल के शीर्ष पर एक प्रतीक लगाने के लिए उनका उपयोग कैसे करेंगे। रहस्य यह है कि यह बिल्कुल क्यों हो रहा है। पहले लिंक ऑर्डर ने प्रतीक प्लेसमेंट का फैसला किया था। ऐसा लगता है कि सी ++ लाइब्रेरी को शामिल करने से प्रभावित हुआ है। मुझे नहीं पता कि ईएलएफ ऑर्डरिंग के मामले में सी ++ ऑब्जेक्ट कोड की कोई विशेष आवश्यकता है या नहीं – user2881914