क्या जीसीसी के साथ एक चरण में प्रीप्रोसेसर आउटपुट और संकलन उत्पन्न करना संभव है?जीसीसी प्रीप्रोसेसर आउटपुट और संकलन एक पास में
कुछ की तरह:
gcc -E -c main.cc -o main.o
कि main.o पैदा करते हैं और main.i
क्या जीसीसी के साथ एक चरण में प्रीप्रोसेसर आउटपुट और संकलन उत्पन्न करना संभव है?जीसीसी प्रीप्रोसेसर आउटपुट और संकलन एक पास में
कुछ की तरह:
gcc -E -c main.cc -o main.o
कि main.o पैदा करते हैं और main.i
हां।
gcc
-save-temps
विकल्प पर देखें।
यह स्रोत फ़ाइल को संकलित करता है और .i
फ़ाइल में प्रीप्रोकैसिंग के परिणाम को बचाता है। (यह असेंबलर चरण के परिणाम को .s
फ़ाइल में भी सहेजता है)।
gcc -save-temps -c main.cc -o main.o
main.o
लेकिन यह भी main.i
और main.s
उत्पन्न होगा।
main.i
प्रीप्रोकैसिंग का परिणाम है।
नहीं होता है, -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 आउटपुट फ़ाइल बनाता है भले ही संकलक अब सामान्य रूप से एक एकीकृत प्रीप्रोसेसर का उपयोग करता है।
विस्तृत जानकारी के लिए धन्यवाद! – alesko
यह पूरी तरह से काम करता है! धन्यवाद! – alesko
@alesko आपका स्वागत है! – ouah
मेरा जीसीसी-आधारित कंपाइलर केवल '.s' फ़ाइल सहेजता है – Adrian