2012-12-22 13 views
7

जब हम कोड संकलित करते हैं, तो ऑब्जेक्ट फ़ाइल उत्पन्न होती है। उस ऑब्जेक्ट फ़ाइल से, लिंकिंग प्रक्रिया में निष्पादन योग्य फ़ाइल उत्पन्न होती है।निष्पादन योग्य फ़ाइल उत्पन्न करने के लिए ऑब्जेक्ट फ़ाइल की आवश्यकता क्यों है?

हमें ऑब्जेक्ट फ़ाइल की आवश्यकता क्यों है? ऑब्जेक्ट फ़ाइल का उपयोग क्या है? क्या यह संभव नहीं हो सकता है कि निष्पादन योग्य फ़ाइल सीधे उत्पन्न हो? आखिरकार, हम प्रोग्राम चलाने के लिए एक निष्पादन योग्य फ़ाइल का उपयोग कर रहे हैं।

उत्तर

11

ऑब्जेक्ट फाइलें पूर्ण निष्पादक (या पुस्तकालय) बनाने के लिए लिंकर का उपयोग करती हैं।

आप आमतौर पर अपने कंपाइलर आउटपुट को निष्पादन योग्य "सीधे" कर सकते हैं, वाक्यविन्यास संकलक पर निर्भर करेगा। जीसीसी के साथ उदाहरण के लिए:

gcc foo.c bar.c ... 

एक निष्पादन और कोई मध्यवर्ती वस्तु फ़ाइल का उत्पादन करेगा रहेगा (लेकिन एक शायद उत्पन्न किया गया होगा - और बाद में नष्ट कर दिया)।

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

ऑब्जेक्ट फ़ाइलों को सैद्धांतिक दृष्टिकोण से "आवश्यक" नहीं है। वे बहुत व्यावहारिक हैं (और वास्तव में कुछ (अधिकांश?) टूलचेन के साथ तकनीकी रूप से आवश्यक हैं, जिन चीजों को असेंबलर जानता है कि कैसे उत्पादन करना है और लिंकर कैसे लिंक करना जानता है)।

संबंधित मुद्दे