Це мене клопоче вже деякий час. Як складаються GCC та g ++?
Я здогадуюсь, що кожна редакція збирається з попередньо побудованою версією. Це правда? І якщо це так, чи означає це, що найдавніші версії g ++ та GCC були написані на зборах?
Це мене клопоче вже деякий час. Як складаються GCC та g ++?
Я здогадуюсь, що кожна редакція збирається з попередньо побудованою версією. Це правда? І якщо це так, чи означає це, що найдавніші версії g ++ та GCC були написані на зборах?
Відповіді:
Найдавніша версія GCC була складена за допомогою іншого компілятора C, оскільки були й інші, коли вони писалися. Найперший компілятор С коли-небудь (ок. 1973, IIRC) був реалізований або в монтажі PDP-11 , або в мові програмування B, яка передувала йому, але в будь-якому випадку компілятор B був написаний у зборі.Аналогічно, перший у світі компілятор C ++ (CPre / Cfront , 1979-1983), ймовірно, спочатку був реалізований у C, потім переписаний у C ++.
Коли ви компілюєте GCC або будь-який інший компілятор, що самостійно хостинг, повний порядок створення:
Цей процес називається завантажувальним . Він перевіряє можливість компілятора самостійно компілювати і гарантує, що отриманий компілятор побудований з усіма оптимізаціями, які він сам реалізує.
EDIT : Дрю Дорман у коментарях вказує на рахунок Б'ярна Струструпа якнайшвидшого впровадження C ++ . Він був реалізований на C ++, але перекладений тим, що Stroustrup називає "препроцесором" з C ++ до C; не повний компілятор за його визначенням, але все-таки C ++ був завантажений у C.
__DATE__
і __TIME__
які змінюються навіть між викликами же компілятором) , як GCC , зібраних з допомогою [GCC скомпільованої з [іншими]] - якщо немає, то це помилка, і 3-ступінчаста збірка завантажувача призначена для цього.