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 · Последнее изменение: 2024/07/02 00:11 — vladpolskiy