ठीक है, अब आप यूनिक्स के एनएम का उल्लेख करते हैं, मैं प्रतीक संकल्प को इंगित कर सकता हूं।
निष्पादन योग्य फाइलें उन संस्थाओं का संदर्भ दे सकती हैं जो स्वयं के भीतर परिभाषित नहीं हैं। उदाहरण के लिए, साझा पुस्तकालयों पर चर या प्रक्रियाएं। उन संस्थाओं को बाहरी प्रतीकों द्वारा पहचाना जाता है। निष्पादन योग्य के पास आंतरिक प्रतीक भी हो सकते हैं जिन्हें बाहरी फाइलों द्वारा संदर्भित किया जा सकता है - जैसे कि पुस्तकालयों के मामले में।
प्रतीक संदर्भ, इस संदर्भ में, एक बार प्रोग्राम को स्मृति में लोड किया गया है, यह सभी बाहरी इकाइयों को उचित पते निर्दिष्ट करता है। इसका मतलब है लोड किए गए कार्यक्रम में हर स्थिति को बदलना जहां बाहरी प्रतीक का संदर्भ बनाया गया था।
ये पते इस बात पर निर्भर करेंगे कि, स्मृति में, बाहरी प्रतीकों के साथ कोड लोड किया गया है।
यूनिक्स में, प्रोग्राम के लिए डिफ़ॉल्ट संकलन मोड निष्पादन योग्य में आवश्यक सब कुछ पूर्व-लिंक करने के बजाय सिस्टम साझा लाइब्रेरी का उपयोग करना है। उदाहरण के लिए, gcc
के साथ प्रोग्राम को संकलित करते समय, यदि आप अनसुलझे प्रतीकात्मक संदर्भों के बजाय, सांख्यिकीय रूप से संकलित होने की इच्छा रखते हैं तो आप -static
ध्वज पास करते हैं।
अधिक जानकारी के लिए "साझा पुस्तकालय" देखें।
स्रोत
2009-07-24 02:33:07
भावना बनाता है आपको बहुत बहुत धन्यवाद: आम तौर पर, इन नियमों कार्यक्रम के शब्दों के साथ बातचीत और कभी कभी वे भी (संभावित) अस्पष्टता में परिणाम कर सकते हैं:
सी ++। मैं "साझा पुस्तकालय" भी देखूंगा। क्या आपके पास ऐसी कोई किताबें हैं जिनके बारे में आप अधिक जानने के लिए सिफारिश कर सकते हैं? –
विषय पर मुझे पता है कि सबसे अच्छी किताब है [_Linkers और Loaders_ जॉन आर लेविन] (http://rads.stackoverflow.com/amzn/click/1558604960)। – alanc