Phiên bản cũ nhất của GCC được biên dịch bằng trình biên dịch C khác, vì có những phiên bản khác khi nó được viết. Trình biên dịch C đầu tiên từ trước đến nay (khoảng năm 1973, IIRC) đã được triển khai trong lắp ráp PDP-11 hoặc bằng ngôn ngữ lập trình B đi trước nó, nhưng trong mọi trường hợp, trình biên dịch B được viết theo cụm.Tương tự, trình biên dịch C ++ đầu tiên (CPre / Cfront , 1979-1983) có thể được triển khai lần đầu tiên trong C, sau đó được viết lại trong C ++.
Khi bạn biên dịch GCC hoặc bất kỳ trình biên dịch tự lưu trữ nào khác, toàn bộ thứ tự xây dựng là:
- Xây dựng phiên bản mới của GCC với trình biên dịch C hiện có
- xây dựng lại phiên bản GCC mới với phiên bản bạn vừa xây dựng
- (tùy chọn) lặp lại bước 2 cho mục đích xác minh.
Quá trình này được gọi là bootstrapping . Nó kiểm tra khả năng tự biên dịch của trình biên dịch và đảm bảo rằng trình biên dịch kết quả được xây dựng với tất cả các tối ưu hóa mà chính nó thực hiện.
EDIT : Drew Dormann, trong các bình luận, chỉ ra tài khoản của Bjarne Stroustrup về việc triển khai C ++ sớm nhất . Nó được triển khai trong C ++ nhưng được dịch bởi cái mà Stroustrup gọi là "tiền xử lý" từ C ++ sang C; không phải là một trình biên dịch đầy đủ theo định nghĩa của anh ta, nhưng C ++ vẫn được bootstraged trong C.