Versi tertua dari GCC dikompilasi menggunakan kompiler C lain, karena ada yang lain ketika ditulis. Kompiler C pertama yang pernah (ca. 1973, IIRC) diimplementasikan baik dalam perakitan PDP-11 , atau dalam bahasa pemrograman B yang mendahuluinya, tetapi dalam hal apa pun kompiler B ditulis dalam perakitan.Demikian pula, kompiler C ++ pertama (CPre / Cfront , 1979-1983) mungkin pertama kali diimplementasikan dalam C, kemudian ditulis ulang dalam C ++.
Saat Anda mengompilasi GCC atau kompiler self-hosting lainnya, susunan lengkap bangunan adalah:
- Buat versi baru GCC dengan kompiler C yang ada
- membangun kembali versi baru GCC dengan yang baru saja Anda buat
- (opsional) ulangi langkah 2 untuk keperluan verifikasi.
Proses ini disebut bootstrap . Ini menguji kemampuan kompiler mengkompilasi sendiri dan memastikan bahwa kompiler yang dihasilkan dibangun dengan semua optimisasi yang diimplementasikan sendiri.
EDIT : Drew Dormann, dalam komentar, menunjuk ke akun Bjarne Stroustrup tentang implementasi paling awal dari C ++ . Itu diimplementasikan dalam C ++ tetapi diterjemahkan oleh apa yang disebut Stroustrup "preprocessor" dari C ++ ke C; bukan kompiler penuh menurut definisinya, tetapi masih C ++ telah bootstrap di C.