2012-01-27 11 views

उत्तर

15

हां।

gcc-save-temps विकल्प पर देखें।

यह स्रोत फ़ाइल को संकलित करता है और .i फ़ाइल में प्रीप्रोकैसिंग के परिणाम को बचाता है। (यह असेंबलर चरण के परिणाम को .s फ़ाइल में भी सहेजता है)।

gcc -save-temps -c main.cc -o main.o 

main.o लेकिन यह भी main.i और main.s उत्पन्न होगा।

main.i प्रीप्रोकैसिंग का परिणाम है।

+0

यह पूरी तरह से काम करता है! धन्यवाद! – alesko

+0

@alesko आपका स्वागत है! – ouah

+0

मेरा जीसीसी-आधारित कंपाइलर केवल '.s' फ़ाइल सहेजता है – Adrian

5

नहीं होता है, -E के साथ ही नहीं, -s, -c और -E विकल्प "रोक" विकल्प कहा जाता है। वे वास्तव में एक विशिष्ट बिंदु पर प्रक्रिया को रोकते हैं ताकि आप आगे नहीं बढ़ सकें।

यदि आप ऐसा करना चाहते हैं, तो आपको इसे दो पास में करना होगा, या संकलन के दौरान सामान्य रूप से हटाए गए अस्थायी फ़ाइलों की प्रतियां रखने के लिए -save-temps का उपयोग करना होगा।

gcc मैनपेज, सामान पर चर्चा से

-E (थोड़ा दूसरे शब्दों में बयान):

आप केवल संकलन के चरणों में से कुछ चाहते हैं, आप -x उपयोग कर सकते हैं (या फ़ाइल नाम प्रत्यय) जहां शुरू करने के लिए जीसीसी बताने के लिए , और विकल्पों में से एक -c, -S, या -E कहने के लिए कि जीसीसी कहाँ रुकना है। ध्यान दें कि कुछ संयोजन (उदाहरण के लिए, -x cpp-output -E) जीसीसी को कुछ भी करने के लिए निर्देश नहीं देते हैं।

-E का अर्थ है: प्रीप्रोकैसिंग चरण के बाद रोकें; संकलक को उचित मत चलाओ। आउटपुट प्रीप्रोसेस्ड सोर्स कोड के रूप में है, जिसे मानक आउटपुट (या आउटपुट फाइल को निर्दिष्ट किया गया है) को भेजा जाता है।

यदि आप -ई विकल्प का उपयोग करते हैं, तो प्रीप्रोकैसिंग को छोड़कर कुछ भी नहीं किया जाता है।

और -save-temps का एक विवरण:

उपयोग करना चाहिए पृष्ठभूमि-temps

स्टोर हमेशा की तरह "अस्थायी" मध्यवर्ती स्थायी रूप से फ़ाइलों; उन्हें वर्तमान निर्देशिका में रखें और उन्हें स्रोत फ़ाइल के आधार पर नाम दें।

इस प्रकार, fc.c---save-temps के साथ foo.c संकलित करना foo.i और foo.s, साथ ही foo.o.

यह प्रीप्रोसेस्ड foo.i आउटपुट फ़ाइल बनाता है भले ही संकलक अब सामान्य रूप से एक एकीकृत प्रीप्रोसेसर का उपयोग करता है।

+0

विस्तृत जानकारी के लिए धन्यवाद! – alesko

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