जीसीसी का सबसे पुराना संस्करण एक और सी संकलक का उपयोग करके संकलित किया गया था, क्योंकि जब इसे लिखा गया था, तो अन्य थे। बहुत पहले C कंपाइलर कभी (ca. 1973, IIRC) को या तो PDP-11 असेंबली में लागू किया गया था , या B प्रोग्रामिंग लैंग्वेज में, जिसने इसे पूर्व दिया था, लेकिन किसी भी स्थिति में B कंपाइलर असेंबली में लिखा गया था।इसी तरह, पहले C ++ कंपाइलर (CPre / Cfront , 1979-1983) संभवतः C में पहले लागू किए गए थे, फिर C ++ में फिर से लिखे गए।
जब आप GCC या किसी अन्य सेल्फ-होस्टिंग कंपाइलर का निर्माण करते हैं, तो बिल्डिंग का पूरा क्रम होता है:
- मौजूदा C कंपाइलर के साथ GCC का नया संस्करण बनाएँ
- आपके द्वारा अभी बनाए गए जीसीसी के नए संस्करण को फिर से बनाएं
- (वैकल्पिक) सत्यापन उद्देश्यों के लिए चरण 2 को दोहराएं।
इस प्रक्रिया को बूटस्ट्रैपिंग कहा जाता है । यह संकलक की खुद की क्षमता का परीक्षण करता है और यह सुनिश्चित करता है कि परिणामस्वरूप संकलक उन सभी अनुकूलन के साथ बनाया गया है जिसे वह स्वयं लागू करता है।
EDIT : ड्रू डोरमैन, टिप्पणियों में, C ++ के शुरुआती कार्यान्वयन के बज़्ने स्ट्रॉस्ट्रुप के खाते की ओर इशारा करता है । इसे C ++ में लागू किया गया था लेकिन Stroustrup ने C ++ से C तक एक "प्रीप्रोसेसर" कहा है; अपनी परिभाषा के अनुसार पूर्ण संकलक नहीं, लेकिन फिर भी C ++ को C में बूटस्ट्रैप किया गया था।