2011-04-14 12 views
71

क्या सीसीसी में जीसीसी सी संकलक लिखा गया है? या यह विधानसभा में लिखा गया है? यदि संकलक सी में लिखा गया है, तो संकलक कोड संकलित करने के लिए उपयोग किया गया कंपाइलर क्या है?क्या सीसीसी में जीसीसी सी संकलक लिखा गया है?

+11

हाँ, यह (अधिकतर) है। बेशक, किसी को सी संकलन करने के लिए सी संकलक की आवश्यकता होती है, जैसा कि अधिकांश कंपाइलर्स के साथ, "बूट-स्ट्रैप" चरणों की एक श्रृंखला होती है। सामान्य विचार [जीसीसी स्थापित करना: बिल्डिंग] (http://gcc.gnu.org/install/build.html) और [जीसीसी - एलएफएस की स्थापना] पर शामिल है (http://www.linuxfromscratch.org/lfs/ देखें/विकास/chapter05/जीसीसी-pass2.html)। –

+0

@mu: यह अगला कदम है। – euphoria83

+2

1 9 80 के दशक और 90 के दशक के शुरुआती दशक में विभिन्न ब्रांड वर्कस्टेशनों में सी कंपाइलर, टूल्स इत्यादि के साथ अपने स्वयं के यूनिक्स-जैसे वातावरण थे ... जो कि एक-दूसरे से थोड़ा अलग थे।जीसीसी स्रोत के साथ आप इन प्लेटफार्मों में से किसी एक पर जीसीसी की प्रारंभिक संकलन कर सकते हैं, और फिर निश्चित बिंदु के लिए जीसीसी को स्वयं से कुछ बार कम या कम जांच सकते हैं। – Paul

उत्तर

82

जीसीसी का विशिष्ट इतिहास GCC Wiki पर दिया गया है। अधिक सामान्य बात यह है कि संकलक आमतौर पर कुछ अन्य कंपाइलर के साथ संकलित होते हैं जब तक वे खुद को संकलित करने के लिए पर्याप्त शक्तिशाली नहीं होते हैं। वैकल्पिक रूप से, एक मूल कंपाइलर लिखना संभव है जो असेंबलर में आपकी सुविधाओं का सबसेट संभाल सकता है, और वहां से बन सकता है। लेकिन फिर, यह अब लगभग कभी जरूरत नहीं है। विभिन्न भाषाओं में बहुत सारे कंपाइलर उपलब्ध हैं। यहां तक ​​कि जब स्टीफन जॉनसन पीसीसी (पहले सी कंपाइलरों में से एक) लिख रहे थे, तब भी कई अन्य भाषाओं के साथ बी के लिए कंपाइलर्स उपलब्ध थे। जीसीसी के पास मूल रूप से इसे बनाने के लिए चुनने के लिए कई कंपाइलर थे, और आरएमएस का कहना है कि वह कम से कम अपने शुरुआती विकास के दौरान पास्टल कंपाइलर का उपयोग कर रहे थे।

याद रखें, सी में एक कंपाइलर लिखा जाना आवश्यक नहीं है। यदि आप चाहें तो इसे पर्ल में लिख सकते हैं। इस बात की कोई आवश्यकता नहीं है कि दिए गए प्लेटफ़ॉर्म के लिए एक कंपाइलर मूल रूप से उस प्लेटफ़ॉर्म पर लिखा जाए (एम्बेडेड सिस्टम लगभग हमेशा किसी अन्य सिस्टम पर संकलित होते हैं)। तो बूटस्ट्रैप करने के कई तरीके हैं।

इस प्रश्न में संकलक बूटस्ट्रैपिंग के पहले उदाहरण से संबंधित कुछ दिलचस्प subtleties है। यदि आप बहुत चालाक थे, तो आप something incredible, brilliant and terrifying करने के लिए उस बूटस्ट्रैप का उपयोग कर सकते हैं।

+10

+1, यह हमेशा एक अच्छा पढ़ा जाता है। :) – unwind

+0

वाह, वह दूसरा लेख जो आपने लिंक किया है वह बेहद चालाक है। – Ponkadoodle

+4

अब वे कुछ [सी ++ जीसीसी में] (http://lwn.net/Articles/542457/) का उपयोग करते हैं। –

49

मूल रूप से यह कुछ असेंबली भाषा में लिखा गया था, फिर उसने कुत्ते को खाना शुरू कर दिया।

+15

+1 वाक्यांश को प्यार करें। –

+1

मैंने मूल बूटस्ट्रैप के लिए असेंबलर का उपयोग करके आरएमएस को कोई संदर्भ नहीं देखा है। इसके लिए आपका स्रोत क्या है? उसके साथ बूटस्ट्रैप के लिए कई अन्य कंपाइलर्स थे, इसलिए ऐसा लगता है कि बहुत सारे काम हैं। –

+14

हालांकि मैं शब्द बूटस्ट्रैप था। –

3

हालांकि यह स्पष्ट रूप से केवल एक बहुत ही मोटा संकेतक है, मुझे निर्देशिकापरपर यह त्वरित पाया गया। यह निर्देशिका में जीसीसी के मुख्य स्रोत हैं (रनटाइम पुस्तकालयों को छोड़कर)।

यहाँ शीर्ष फ़ाइल मायने रखता है (100 से अधिक) विस्तार C और C++ फ़ाइलों का प्रभुत्व द्वारा समाहित हैं।

112 .opt 
    118 .def 
    140 .cc 
    185 .x 
    250 .exp 
    353 .md 
    366 .mm 
    414 .f 
    430 .f03 
    521 .m 
    625 .a 
    1082 .go 
    1371 .h 
    1602 .ads 
    1655 .adb 
    1828 .ada 
    3860 .f90 
    11231 .C  // C++ 
    23811 .c  // C 

कृपया ध्यान दें कि आजकल GCC GNU संकलन संग्रह, न सिर्फ GNU सी संकलक को दर्शाता है।

6,3 जीसीसी Subdirectory

जीसीसी निर्देशिका कि सी सूत्रों जीसीसी के , विन्यास के भाग के रूप में इस्तेमाल किया और प्रक्रिया का निर्माण अन्य फ़ाइलों का हिस्सा हैं कई फाइलों और प्रलेखन सहित उपनिर्देशिका शामिल और एक परीक्षण।

संदर्भ:https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html

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