Почему G CC сам компилируется 3 раза? - PullRequest
2 голосов
/ 06 марта 2020

Я скомпилировал G CC из источника, но я не могу полностью понять утилиту gcc компиляции * три раза.

Какая польза от этого?

Этот ответ говорит:

  • Сборка новой версии G CC с существующим C компилятором
  • re соберите новую версию G CC с той, которую вы только что создали
  • (необязательно), повторите шаг 2 для целей проверки.

Теперь мой вопрос заключается в том, что однажды первый шаг завершен и компилятор собран зачем тратить время на его восстановление?

Это только для проверки? Если это так, то это выглядит довольно расточительно.

Здесь все усложняется здесь ,

Сборка для этого более сложна, чем для предыдущих пакетов, потому что вы Вы отправляете больше информации в скрипт конфигурации, и цели make не являются стандартными.

Я имею в виду, что весь компилятор написан на C правильно, так почему бы просто не сделать все за один проход?

Какая польза от 3-фазного bootstrap?

Заранее спасибо.

1 Ответ

4 голосов
/ 06 марта 2020
  • Этапы 2. и 3. являются хорошим тестом для самого компилятора: если он может компилироваться сам (и обычно также некоторые библиотеки, такие как libgcc и libstdc++-v3), тогда он может жевать не тривиальные проекты.

  • На этапах 2. и 3. вы можете генерировать различные опции компилятора, например, без оптимизации (-O0) или с включенной оптимизацией (-O2). Поскольку выходные / побочные эффекты программы не должны зависеть от используемого уровня оптимизации, любая версия компилятора должна создавать одинаковые двоичные файлы, даже если они двоичные и очень разные. Это еще один (тест во время выполнения) для компилятора.

Если вы по какой-то причине предпочитаете не bootstrap, настройте --disable-bootstrap.

...