Что такое lto1.exe? - PullRequest
       10

Что такое lto1.exe?

2 голосов
/ 03 февраля 2020

при проверке mingw вы обнаружите компилятор c cc1.exe (забавно растущий в 9.2, размер почти 25 МБ) cc1plus.exe - компилятор c ++ (тех же размеров) collect2.exe - гайка компоновщика (afiak) Что такое lto1.exe?

Я гуглил больше часа, но не нашел информации по этому вопросу. Есть ли какая-нибудь хорошая информация по этому доступному для чтения? tnx

пс. Я подозреваю, что это может быть связано с оптимизацией времени соединения, но больше ничего о нем не нашел, и я хотел бы узнать лучше

. Есть также вопрос, что такое g cc .exe g ++. exe и mingw32-g. cc .exe mingw32-g ++. Exe затем

Мне нужно больше информации, самое лучшее - tnx

1 Ответ

2 голосов
/ 03 февраля 2020

Это не специфично для mingw / windos; это функция / компонент G CC.

, что такое lto1.exe?

Это компилятор lto: o). lto - это в основном байт-код, написанный при компиляции с -flto, где «lto» или «LTO» означает «оптимизация во время соединения».

Эти оптимизации не выполняется компоновщиком, но компилятором в время компоновки для выполнения глобальных оптимизаций, когда доступен (байт-) код из всех модулей. Процесс выглядит следующим образом:

  1. Компилятор C / C ++ (cc1 для C или cc1plus для C ++) компилирует C / C ++ в байт-код и записывает его в файл сборки *.s.
  2. Сборка собирается ассемблером в код объекта *.o как обычно. Этот код поставляется в отдельных разделах.
  3. Во время компоновки компоновщик (плагин) вызывает компилятор и предоставляет все объекты и библиотеки в соответствии с запросом. байт-код извлекается, и компилятор lto1 компилирует его в окончательный машинный код.
  4. Окончательный машинный код собирается ассемблером в объектный код.
  5. Компоновщик связывает / находит эти Объекты к окончательному исполняемому коду.

Вы видите байт-код в разделах lto с -save-temps и просматриваете сохраненные файлы *.s. Последние версии G CC даже не беспокоятся о написании ассемблерного кода; они просто пишут код. Чтобы увидеть код сборки, укажите -ffat-lto-objects. Заметьте, однако, что это , а не окончательный код.

Забавный рост в 9.2 размера - это почти 25 МБ

Размеры G * Исполняемые файлы 1063 * зависят не только от основной версии G CC, но также и от того, насколько хорошо оптимизируется компилятор, используемый для сборки G CC.

[Редактировать] Некоторую информацию о LTO можно найти на G CC вики для LTO . Однако обратите внимание, что эта страница больше не активна. Одно из мест, где можно встретить Gory G CC: список рассылки gcc-help@gcc.gnu.org , где находятся все разработчики. Есть также раздел о LTO во внутренних органах G CC .

...