software:linux_server:lfs:chapter05
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| software:linux_server:lfs:chapter05 [2024/07/02 00:11] – создано vladpolskiy | software:linux_server:lfs:chapter05 [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ======5. Заключительный этап подготовки====== | ||
| - | Содержание | ||
| - | * [[software: | ||
| - | * [[software: | ||
| - | * [[software: | ||
| - | * [[software: | ||
| - | * [[software: | ||
| - | * [[software: | ||
| - | =====5.1. Введение===== | ||
| - | В этой главе дано описание, | ||
| - | |||
| - | Программы, | ||
| - | |||
| - | =====5.2. Binutils-2.42 - Проход 1===== | ||
| - | |||
| - | |Пакет Binutils содержит компоновщик, | ||
| - | |Приблизительное время сборки: | ||
| - | |Требуемое дисковое пространство: | ||
| - | |||
| - | <WRAP left round info 100%> | ||
| - | **Примечание** \\ | ||
| - | Вернитесь назад и перечитайте примечания в разделе Общие инструкции по компиляции. Понимание информации, | ||
| - | </ | ||
| - | |||
| - | Очень важно, чтобы Binutils был скомпилированным первым, | ||
| - | |||
| - | В документации пакета Binutils рекомендуется выполнять сборку в отдельном каталоге, | ||
| - | |||
| - | < | ||
| - | mkdir -v build | ||
| - | cd build | ||
| - | </ | ||
| - | |||
| - | <WRAP left round info 100%> | ||
| - | **Примечание** \\ | ||
| - | Для того, чтобы значения SBU, перечисленные в остальной части книги, были вам полезны, | ||
| - | </ | ||
| - | |||
| - | Теперь подготовьте Binutils к компиляции: | ||
| - | |||
| - | < | ||
| - | ../ | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | **Значение параметров настройки: | ||
| - | |||
| - | * **--prefix=$LFS/ | ||
| - | Указывает сценарию configure подготовить к установке пакет Binutils в каталог $LFS/tools. | ||
| - | |||
| - | * **--with-sysroot=$LFS** | ||
| - | Для кросс-компляции указывает системе сборки искать в $LFS библиотеки целевой системы, | ||
| - | |||
| - | * **--target=$LFS_TGT** | ||
| - | Поскольку название машины в значении переменной LFS_TGT может отличаться от значения, | ||
| - | |||
| - | * **--disable-nls** | ||
| - | Этот параметр отключает интернационализацию, | ||
| - | |||
| - | * **--enable-gprofng=no** | ||
| - | Этот параметр отключает сборку gprofng, который не нужен для временного инструментария. | ||
| - | |||
| - | * **--disable-werror** | ||
| - | Этот параметр предотвращает остановку сборки в случае появления предупреждений от компилятора хоста. | ||
| - | |||
| - | * **--enable-default-hash-style=gnu** | ||
| - | По умолчанию компоновщик генерирует как хеш-таблицу в стиле GNU, так и классическую хеш-таблицу ELF для общих библиотек и динамически связанных исполняемых файлов. Хеш-таблицы необходимы только для динамического компоновщика, | ||
| - | |||
| - | Скомпилируйте пакет: | ||
| - | |||
| - | < | ||
| - | make | ||
| - | </ | ||
| - | |||
| - | Установите пакет: | ||
| - | |||
| - | < | ||
| - | make install | ||
| - | </ | ||
| - | |||
| - | Подробная информация об этом пакете находится в [[software: | ||
| - | |||
| - | =====5.3. GCC-13.2.0 - Проход 1===== | ||
| - | |||
| - | |Пакет GCC содержит коллекцию компиляторов GNU, которая включает компиляторы C и C++.|| | ||
| - | |Приблизительное время сборки: | ||
| - | |Требуемое дисковое пространство: | ||
| - | |||
| - | <WRAP left round info 100%> | ||
| - | **Примечание** \\ | ||
| - | В этой главе часто возникают недоразумения, | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | tar -xf ../ | ||
| - | mv -v mpfr-4.2.1 mpfr | ||
| - | tar -xf ../ | ||
| - | mv -v gmp-6.3.0 gmp | ||
| - | tar -xf ../ | ||
| - | mv -v mpc-1.3.1 mpc | ||
| - | </ | ||
| - | |||
| - | На хостах x86_64 измените имя каталога по умолчанию для 64-битных библиотек на «lib»: | ||
| - | |||
| - | < | ||
| - | case $(uname -m) in | ||
| - | x86_64) | ||
| - | sed -e '/ | ||
| - | -i.orig gcc/ | ||
| - | ;; | ||
| - | esac | ||
| - | </ | ||
| - | |||
| - | В документации к GCC рекомендуется собирать GCC в отдельном каталоге: | ||
| - | |||
| - | < | ||
| - | mkdir -v build | ||
| - | cd build | ||
| - | </ | ||
| - | |||
| - | Подготовьте GCC к компиляции: | ||
| - | |||
| - | < | ||
| - | ../ | ||
| - | --target=$LFS_TGT | ||
| - | --prefix=$LFS/ | ||
| - | --with-glibc-version=2.39 \ | ||
| - | --with-sysroot=$LFS | ||
| - | --with-newlib | ||
| - | --without-headers | ||
| - | --enable-default-pie | ||
| - | --enable-default-ssp | ||
| - | --disable-nls | ||
| - | --disable-shared | ||
| - | --disable-multilib | ||
| - | --disable-threads | ||
| - | --disable-libatomic | ||
| - | --disable-libgomp | ||
| - | --disable-libquadmath | ||
| - | --disable-libssp | ||
| - | --disable-libvtv | ||
| - | --disable-libstdcxx | ||
| - | --enable-languages=c, | ||
| - | </ | ||
| - | |||
| - | **Значение параметров настройки: | ||
| - | |||
| - | * **--with-glibc-version=2.39** | ||
| - | Этот параметр указывает версию Glibc, которая будет использоваться на целевой системе. Он не имеет отношения к libc хост-дистрибутива, | ||
| - | |||
| - | * **--with-newlib** | ||
| - | Поскольку работающая библиотека C еще недоступна, | ||
| - | |||
| - | * **--without-headers** | ||
| - | При создании полного кросс-компилятора GCC требует наличия стандартных заголовков, | ||
| - | |||
| - | * **--enable-default-pie и --enable-default-ssp** | ||
| - | Эти параметры позволяют GCC по умолчанию компилировать программы с некоторые функциями усиливающими безопасность (более подробная информация о них приведена в примечание о PIE и SSP в Главе 8). На данном этапе это не является строго обязательным, | ||
| - | |||
| - | * **--disable-shared** | ||
| - | Этот параметр заставляет GCC статически связывать свои внутренние библиотеки. Он необходим потому что общие библиотеки требуют Glibc, который еще не установлен в целевой системе. | ||
| - | |||
| - | * **--disable-multilib** | ||
| - | На x86_64, LFS не поддерживает конфигурацию multilib. Этот аргумент никак не влияет на работу с архитектурой x86. | ||
| - | |||
| - | * **--disable-threads, | ||
| - | Эти аргументы отключают поддержку расширений для работы с многопоточностью, | ||
| - | |||
| - | * **--enable-languages=c, | ||
| - | Этот параметр обеспечивает сборку только компиляторов C и C++. Это единственные языки, которые нужны сейчас. | ||
| - | |||
| - | Скомпилируйте GCC, выполнив: | ||
| - | |||
| - | < | ||
| - | make | ||
| - | </ | ||
| - | |||
| - | Установите пакет: | ||
| - | |||
| - | < | ||
| - | make install | ||
| - | </ | ||
| - | |||
| - | Во время сборки GCC установил пару внутренних системных заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие системные ограничения **limits.h**, | ||
| - | |||
| - | <WRAP left round info 100%> | ||
| - | **Примечание** \\ | ||
| - | В приведенной ниже команде показан пример подстановки вложенных команд, | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | cd .. | ||
| - | cat gcc/ | ||
| - | `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/ | ||
| - | </ | ||
| - | |||
| - | Подробная информация об этом пакете находится в [[software: | ||
| - | |||
| - | =====5.4. Заголовочные файлы Linux-6.7.4 API===== | ||
software/linux_server/lfs/chapter05.1719868298.txt.gz · Последнее изменение: — vladpolskiy
