software:linux_server:lfs:chapter06
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
software:linux_server:lfs:chapter06 [2024/07/02 09:43] – [6.10. Grep-3.11] vladpolskiy | software:linux_server:lfs:chapter06 [2024/07/02 12:37] (текущий) – [6. Кросс-Компиляция временных инструментов] vladpolskiy | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ======6. Кросс-Компиляция временных инструментов====== | + | ======Часть III. Глава |
Содержание | Содержание | ||
* [[software: | * [[software: | ||
Строка 418: | Строка 418: | ||
|Приблизительное время сборки: | |Приблизительное время сборки: | ||
|Требуемое дисковое пространство: | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.10.1. Установка пакета Grep==== | ||
+ | |||
+ | Подготовьте Grep к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --host=$LFS_TGT \ | ||
+ | --build=$(./ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
+ | |||
=====6.11. Gzip-1.13===== | =====6.11. Gzip-1.13===== | ||
+ | |||
+ | |Пакет Gzip содержит программы для сжатия и распаковки файлов.|| | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.11.1. Установка пакета Gzip==== | ||
+ | |||
+ | Подготовьте Gzip к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
+ | |||
=====6.12. Make-4.4.1===== | =====6.12. Make-4.4.1===== | ||
+ | |||
+ | |Пакет Make содержит программу, | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.12.1. Установка пакета Make==== | ||
+ | |||
+ | Подготовьте Make к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --without-guile \ | ||
+ | --host=$LFS_TGT \ | ||
+ | --build=$(build-aux/ | ||
+ | </ | ||
+ | |||
+ | ===Значение новой опции настройки: | ||
+ | |||
+ | * **--without-guile** | ||
+ | Несмотря на то, что мы выполняем кросс-компиляцию, | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
+ | |||
=====6.13. Patch-2.7.6===== | =====6.13. Patch-2.7.6===== | ||
+ | |||
+ | |Пакет Patch содержит программу для изменения или создания файлов путём наложение «патча», | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.13.1. Установка пакета Patch==== | ||
+ | |||
+ | Подготовьте Patch к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --host=$LFS_TGT \ | ||
+ | --build=$(build-aux/ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
+ | |||
=====6.14. Sed-4.9===== | =====6.14. Sed-4.9===== | ||
+ | |||
+ | |Пакет Sed содержит потоковый редактор текста|| | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.14.1. Установка пакета Sed==== | ||
+ | |||
+ | Подготовьте Sed к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --host=$LFS_TGT \ | ||
+ | --build=$(./ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
=====6.15. Tar-1.35===== | =====6.15. Tar-1.35===== | ||
+ | |||
+ | |Пакет Tar предоставляет возможность создавать tar архивы, | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.15.1. Установка пакета Tar==== | ||
+ | |||
+ | Подготовьте Tar к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --host=$LFS_TGT | ||
+ | --build=$(build-aux/ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
=====6.16. Xz-5.4.6===== | =====6.16. Xz-5.4.6===== | ||
+ | |||
+ | |Пакет Xz содержит программы для сжатия и распаковки файлов. Он предоставляет возможности для lzma и более новых форматов сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.16.1. Установка пакета Xz==== | ||
+ | |||
+ | Подготовьте Xz к компиляции: | ||
+ | |||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | --host=$LFS_TGT | ||
+ | --build=$(build-aux/ | ||
+ | --disable-static | ||
+ | --docdir=/ | ||
+ | </ | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Удалите архивный файл libtool, поскольку он потенциально опасен при кросс-компиляции: | ||
+ | |||
+ | < | ||
+ | rm -v $LFS/ | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
=====6.17. Binutils-2.42 - Проход 2===== | =====6.17. Binutils-2.42 - Проход 2===== | ||
+ | |||
+ | |Пакет Binutils содержит компоновщик, | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | |||
+ | ====6.17.1. Установка пакета Binutils==== | ||
+ | |||
+ | Система сборки Binutils использует содержащуюся в пакете копию libtool для линковки с внутренними статическими библиотеками, | ||
+ | |||
+ | < | ||
+ | sed ' | ||
+ | </ | ||
+ | |||
+ | Создайте отдельный каталог для сборки: | ||
+ | |||
+ | < | ||
+ | mkdir -v build | ||
+ | cd build | ||
+ | </ | ||
+ | |||
+ | Подготовьте Binutils к компиляции: | ||
+ | |||
+ | < | ||
+ | ../ | ||
+ | --prefix=/ | ||
+ | --build=$(../ | ||
+ | --host=$LFS_TGT | ||
+ | --disable-nls | ||
+ | --enable-shared | ||
+ | --enable-gprofng=no | ||
+ | --disable-werror | ||
+ | --enable-64-bit-bfd | ||
+ | --enable-default-hash-style=gnu | ||
+ | </ | ||
+ | |||
+ | ===Значение новых параметров настройки: | ||
+ | |||
+ | * **--enable-shared** | ||
+ | Собирает libbfd как разделяемую библиотеку | ||
+ | |||
+ | * **--enable-64-bit-bfd** | ||
+ | Включает 64-разрядную поддержку (на хостах с меньшим размером слова). В 64-разрядных системах это может и не понадобиться, | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | Удалите архивные файлы libtool, поскольку они потенциально опасны при кросс-компиляции, | ||
+ | |||
+ | < | ||
+ | rm -v $LFS/ | ||
+ | </ | ||
+ | |||
+ | Подробная информация об этом пакете находится в [[software: | ||
+ | |||
+ | |||
=====6.18. GCC-13.2.0 - Проход 2===== | =====6.18. GCC-13.2.0 - Проход 2===== | ||
+ | |Пакет GCC содержит коллекцию компиляторов GNU, которая включает компиляторы C и C++.|| | ||
+ | |Приблизительное время сборки: | ||
+ | |Требуемое дисковое пространство: | ||
+ | ====6.18.1. Установка пакета GCC==== | ||
+ | Как и при первой сборке GCC, требуются пакеты GMP, MPFR и MPC. Распакуйте архивы и переименуйте каталоги: | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | Переопределите правила сборки заголовочных файлов libgcc и libstdc++, чтобы разрешить создание этих библиотек с поддержкой потоков POSIX: | ||
+ | |||
+ | < | ||
+ | sed '/ | ||
+ | -i libgcc/ | ||
+ | </ | ||
+ | |||
+ | Снова создайте отдельный каталог сборки: | ||
+ | |||
+ | < | ||
+ | mkdir -v build | ||
+ | cd build | ||
+ | </ | ||
+ | |||
+ | Перед началом сборки GCC не забудьте отключить все переменные среды, которые переопределяют флаги оптимизации по умолчанию. | ||
+ | |||
+ | Теперь подготовьте GCC к компиляции: | ||
+ | |||
+ | < | ||
+ | ../ | ||
+ | --build=$(../ | ||
+ | --host=$LFS_TGT | ||
+ | --target=$LFS_TGT | ||
+ | LDFLAGS_FOR_TARGET=-L$PWD/ | ||
+ | --prefix=/ | ||
+ | --with-build-sysroot=$LFS | ||
+ | --enable-default-pie | ||
+ | --enable-default-ssp | ||
+ | --disable-nls | ||
+ | --disable-multilib | ||
+ | --disable-libatomic | ||
+ | --disable-libgomp | ||
+ | --disable-libquadmath | ||
+ | --disable-libsanitizer | ||
+ | --disable-libssp | ||
+ | --disable-libvtv | ||
+ | --enable-languages=c, | ||
+ | </ | ||
+ | |||
+ | ===Значение новых параметров настройки: | ||
+ | |||
+ | * **--with-build-sysroot=$LFS** | ||
+ | Обычно, | ||
+ | |||
+ | * **--target=$LFS_TGT** | ||
+ | Поскольку мы выполняем кросс-компиляцию GCC, невозможно создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными двоичными файлами GCC, потому что эти двоичные файлы не будут работать на хост-дистрибутиве. Система сборки GCC по умолчанию попытается использовать компиляторы C и C++ хоста в качестве обходного пути. Сейчас не поддерживается создание целевых библиотек GCC с помощью другой версии GCC, поэтому использование компиляторов хоста может привести к сбою сборки. Этот параметр гарантирует сборку библиотек с помощью GCC собранного на первом проходе. | ||
+ | |||
+ | * **LDFLAGS_FOR_TARGET=...** | ||
+ | Разрешить libstdc++ использовать общую библиотеку libgcc, собранную на этом этапе, вместо статической версии, | ||
+ | |||
+ | * **--disable-libsanitizer** | ||
+ | Отключает библиотеки среды выполнения GCC sanitizer. Они не нужны для временного набора инструментов. Этот параметр необходим для сборки GCC без установки libcrypt для целевого объекта. В GCC-Проход 1 это решалось с помощью параметра --disable-libstdcxx, | ||
+ | |||
+ | Скомпилируйте пакет: | ||
+ | |||
+ | < | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Установите пакет: | ||
+ | |||
+ | < | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | В качестве завершающего штриха создайте символическую ссылку на утилиту. Многие программы и скрипты используют cc вместо gcc, чтобы сделать программы более универсальными и, следовательно, | ||
+ | |||
+ | < | ||
+ | ln -sv gcc $LFS/ | ||
+ | </ | ||
+ | Подробная информация об этом пакете находится в [[software: | ||
software/linux_server/lfs/chapter06.1719902611.txt.gz · Последнее изменение: 2024/07/02 09:43 — vladpolskiy