LTO

Материал из ALT Linux Wiki
Версия от 07:24, 26 августа 2021; VitalyLipatov (обсуждение | вклад) (Новая страница: «В Сизифе включена LTO (link-time optimization). LTO — это уже широко распространённая оптимизация, её…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

В Сизифе включена LTO (link-time optimization).

LTO — это уже широко распространённая оптимизация, её уже включили в openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею уже можно пользоваться;

LTO — это уже настолько распространённая оптимизация, что скоро без LTO уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе дороже;

LTO поддерживается на всех архитектурах, кроме вторичных (e2k).

Возникающие ошибки и их исправление

process-lto: ERROR

Исправление самой массовой сборочной ошибки "process-lto: ERROR:", вызванной включением LTO, тривиально.

/usr/bin/strip: Unable to recognise the format

Для ошибок вида

/usr/bin/strip: Unable to recognise the format of the input file `./usr/libexec/arm-none-eabi/lib/libm.a(lib_a-wrf_lgamma.o)'

сборку можно исправить, добавив такие библиотеки в %brp_strip_none.

Упаковка статических библиотек

Пакеты, собирающие статические библиотеки, могут получить ошибку вида

process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.

С такими пакетами можно поступить одним из двух способов:

  • перестать паковать статические библиотеки;
  • добавить в спек-файл
%{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}

Прочие проблемы

Другие проблемы, связанные с включением LTO. С такими пакетами можно поступить одним из нескольких способов:

  • обновить пакеты, весьма вероятно, что они уже исправлены в новых версиях;
  • исправить LTO самостоятельно;
  • выключить LTO, переопределив макрос optflags_lto:
%define optflags_lto %nil


Ссылки