Инструменты пользователя

Инструменты сайта


software:linux_server:lfs:chapter06

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:linux_server:lfs:chapter06 [2024/07/02 09:32] – [6.8. Findutils-4.9.0] vladpolskiysoftware:linux_server:lfs:chapter06 [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-======6. Кросс-Компиляция временных инструментов====== 
-Содержание 
-  * [[software:linux_server:lfs:chapter06#6.1. Введение|6.1. Введение]] 
-  * [[software:linux_server:lfs:chapter06#6.2. M4-1.4.19|6.2. M4-1.4.19]] 
-  * [[software:linux_server:lfs:chapter06#6.3. Ncurses-6.4-20230520|6.3. Ncurses-6.4-20230520]] 
-  * [[software:linux_server:lfs:chapter06#6.4. Bash-5.2.21|6.4. Bash-5.2.21]] 
-  * [[software:linux_server:lfs:chapter06#6.5. Coreutils-9.4|6.5. Coreutils-9.4]] 
-  * [[software:linux_server:lfs:chapter06#6.6. Diffutils-3.10|6.6. Diffutils-3.10]] 
-  * [[software:linux_server:lfs:chapter06#6.7. File-5.45|6.7. File-5.45]] 
-  * [[software:linux_server:lfs:chapter06#6.8. Findutils-4.9.0|6.8. Findutils-4.9.0]] 
-  * [[software:linux_server:lfs:chapter06#6.9. Gawk-5.3.0|6.9. Gawk-5.3.0]] 
-  * [[software:linux_server:lfs:chapter06#6.10. Grep-3.11|6.10. Grep-3.11]] 
-  * [[software:linux_server:lfs:chapter06#6.11. Gzip-1.13|6.11. Gzip-1.13]] 
-  * [[software:linux_server:lfs:chapter06#6.12. Make-4.4.1|6.12. Make-4.4.1]] 
-  * [[software:linux_server:lfs:chapter06#6.13. Patch-2.7.6|6.13. Patch-2.7.6]] 
-  * [[software:linux_server:lfs:chapter06#6.14. Sed-4.9|6.14. Sed-4.9]] 
-  * [[software:linux_server:lfs:chapter06#6.15. Tar-1.35|6.15. Tar-1.35]] 
-  * [[software:linux_server:lfs:chapter06#6.16. Xz-5.4.6|6.16. Xz-5.4.6]] 
-  * [[software:linux_server:lfs:chapter06#6.17. Binutils-2.42 - Проход 2|6.17. Binutils-2.42 - Проход 2]] 
-  * [[software:linux_server:lfs:chapter06#6.18. GCC-13.2.0 - Проход 2|6.18. GCC-13.2.0 - Проход 2]] 
- 
-=====6.1. Введение===== 
-В этой главе рассказывается, как выполнить кросс-компиляцию базовых утилит с использованием только что собранного кросс-тулчейна. Эти утилиты установлены в свое конечное местоположение, но пока не могут быть использованы. Выполняемые инструкции по-прежнему зависят от инструментария хоста. Тем не менее, установленные библиотеки используются при компоновке. 
- 
-Использование утилит станет возможным в следующей главе после входа в среду «chroot». Все пакеты из этой главы, должны быть собраны до того, как мы это сделаем. Поэтому пока наша система зависима от хост-системы. 
- 
-Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер непригодным для использования. Всю эту главу нужно выполнить от имени пользователя lfs, в его рабочем окружении, как описано в [[software:linux_server:lfs:chapter04#4.4. Настройка окружения|Разделе 4.4. «Настройка окружения»]]. 
- 
-=====6.2. M4-1.4.19===== 
- 
-|Пакет M4 содержит макропроцессор.|| 
-|Приблизительное время сборки:|0.1 SBU| 
-|Требуемое дисковое пространство:|31 MB| 
- 
-====6.2.1. Установка пакета M4==== 
- 
-Подготовьте пакет M4 к компиляции: 
- 
-<code> 
-./configure --prefix=/usr   \ 
-            --host=$LFS_TGT \ 
-            --build=$(build-aux/config.guess) 
-</code> 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS install 
-</code> 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.12.2. Содержимое пакета M4|Разделе 8.12.2. «Содержимое пакета M4.»]] 
- 
-=====6.3. Ncurses-6.4-20230520===== 
- 
-|Пакет Ncurses содержит библиотеки для независимой от терминала обработки ввода/вывода|| 
-|Приблизительное время сборки:|0.3 SBU| 
-|Требуемое дисковое пространство:|51 MB| 
- 
-====6.3.1. Установка пакета Ncurses==== 
- 
-Во-первых, убедитесь, что gawk найден первым во время настройки: 
- 
-<code> 
-sed -i s/mawk// configure 
-</code> 
- 
-Затем выполните следующие команды, чтобы собрать программу «tic» на хосте сборки: 
- 
-<code> 
-mkdir build 
-pushd build 
-  ../configure 
-  make -C include 
-  make -C progs tic 
-popd 
-</code> 
- 
-Подготовьте Ncurses к компиляции: 
- 
-<code> 
-./configure --prefix=/usr                \ 
-            --host=$LFS_TGT              \ 
-            --build=$(./config.guess)    \ 
-            --mandir=/usr/share/man      \ 
-            --with-manpage-format=normal \ 
-            --with-shared                \ 
-            --without-normal             \ 
-            --with-cxx-shared            \ 
-            --without-debug              \ 
-            --without-ada                \ 
-            --disable-stripping          \ 
-            --enable-widec 
-</code> 
- 
-===Значение новых параметров настройки:=== 
- 
-  * **--with-manpage-format=normal** 
-Этот аргумент предотвращает установку Ncurses сжатых страниц руководства, это может произойти, если сам дистрибутив хоста содержит сжатые страницы руководства. 
- 
-  * **--with-shared** 
-Этот аргумент позволяет Ncurses собирать и устанавливать разделяемые библиотеки C. 
- 
-  * **--without-normal** 
-Этот аргумент предотвращает сборку и установку статических библиотек C. 
- 
-  * **--without-debug** 
-Этот аргумент предотвращает сборку и установку отладочных библиотек. 
- 
-  * **--with-cxx-shared** 
-Это аргумент позволяет Ncurses собирать и устанавливать общие привязки C++. А также предотвращает сборку и установку статических привязок C++. 
- 
-  * **--without-ada** 
-Этот аргумент гарантирует, что Ncurses будет собран без поддержки компилятора Ada, который может присутствовать на хосте, но будет недоступен, как только мы войдем в среду chroot. 
- 
-  * **--disable-stripping** 
-Этот аргумент не позволяет системе сборки использовать программу strip с хоста. Использование инструментов хоста в кросс-компилируемой программе может привести к сбою. 
- 
-  * **--enable-widec** 
-Этот аргумент указывает, что необходимо скомпилировать библиотеки расширенных символов (такие как, libncursesw.so.6.4-20230520) вместо обычных (таких как, libncurses.so.6.4-20230520). Эти библиотеки расширенных символов можно использовать как в многобайтовой, так и традиционной 8-битной локали, в то время как обычные библиотеки корректно работают только в 8-битных локалях. Библиотеки расширенных символов и обычные совместимы на уровне исходного кода, но не совместимы в двоичном. 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install 
-ln -sv libncursesw.so $LFS/usr/lib/libncurses.so 
-sed -e 's/^#if.*XOPEN.*$/#if 1/' \ 
-    -i $LFS/usr/include/curses.h 
-</code> 
- 
-===Значение параметров установки:=== 
- 
-  * **TIC_PATH=$(pwd)/build/progs/tic** 
-Нам нужно передать путь до только что собранной программы tic, которая работает на сборочной машине, чтобы база данных терминала была создана без ошибок. 
- 
-  * **ln -sv libncursesw.so $LFS/usr/lib/libncurses.so** 
-Библиотека libncurses.so необходима для нескольких пакетов, которые мы скоро соберем. Мы создаем эту символическую ссылку, чтобы использовать libncursesw.so в качестве замены. 
- 
-  * **sed -e 's/^#if.*XOPEN.*$/#if 1/' ...** 
-Заголовочный файл curses.h содержит определения различных структур данных Ncurses. С разными определениями макросов препроцессора могут использоваться два разных набора определений структуры данных: 8-битное определение совместимо с libncurses.so, а определение расширенного набора символов совместимо с libncursesw.so . Поскольку мы используем libncursesw.so вместо libncurses.so, отредактируйте заголовочный файл, чтобы он всегда использовал определение структуры данных расширенного набора символов, совместимое с . libncursesw.so. 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.29.2. Содержимое пакета Ncurses|Разделе 8.29.2. «Содержимое пакета Ncurses.»]] 
-=====6.4. Bash-5.2.21===== 
- 
-|Пакет Bash содержит Bourne-Again Shell.|| 
-|Приблизительное время сборки:|0.2 SBU| 
-|Требуемое дисковое пространство:|67 MB| 
- 
-====6.4.1. Установка пакета Bash==== 
- 
-Подготовьте Bash к компиляции: 
- 
-<code> 
-./configure --prefix=/usr                      \ 
-            --build=$(sh support/config.guess) \ 
-            --host=$LFS_TGT                    \ 
-            --without-bash-malloc 
-</code> 
- 
-===Значение параметров настройки:=== 
- 
-  * **--without-bash-malloc** 
-Этот параметр отключает использование функции распределения памяти (malloc) Bash, которая, как известно, вызывает ошибки сегментации. Если опция отключена, Bash будет использовать функции malloc из Glibc, которые более стабильны. 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS install 
-</code> 
- 
-Создайте символическую ссылку для программ, которые используют sh как оболочку: 
- 
-<code> 
-ln -sv bash $LFS/bin/sh 
-</code> 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.35.2. Содержимое пакета Bash|Разделе  8.35.2. «Содержимое пакета Bash.»]] 
-=====6.5. Coreutils-9.4===== 
- 
-|Пакет Coreutils содержит основные утилиты, необходимые каждой операционной системе.|| 
-|Приблизительное время сборки:|0.3 SBU| 
-|Требуемое дисковое пространство:|173 MB| 
- 
-====6.5.1. Установка пакета Coreutils==== 
- 
-Подготовьте Coreutils к компиляции: 
- 
-<code> 
-./configure --prefix=/usr                     \ 
-            --host=$LFS_TGT                   \ 
-            --build=$(build-aux/config.guess) \ 
-            --enable-install-program=hostname \ 
-            --enable-no-install-program=kill,uptime 
-</code> 
- 
-===Значение параметров настройки:=== 
- 
-  * **--enable-install-program=hostname** 
-Этот параметр позволяет создать и установить двоичный файл hostname – по умолчанию он отключен, но требуется для набора тестов Perl. 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS install 
-</code> 
- 
-Переместите программы в их конечное местоположение. Хотя во временной среде в этом нет необходимости, мы должны это сделать, потому что некоторые программы жестко прописывают местоположение исполняемых файлов: 
- 
-<code> 
-mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin 
-mkdir -pv $LFS/usr/share/man/man8 
-mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 
-sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8 
-</code> 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.57.2. Содержимое пакета Coreutils|Разделе 8.57.2. «Содержимое пакета Coreutils.»]] 
-=====6.6. Diffutils-3.10===== 
- 
-|Пакет Diffutils содержит программы, которые показывают различия между файлами или каталогами.|| 
-|Приблизительное время сборки:|0.1 SBU| 
-|Требуемое дисковое пространство:|29 MB| 
- 
-====6.6.1. Установка пакета Diffutils==== 
- 
-Подготовьте Diffutils для компиляции: 
- 
-<code> 
-./configure --prefix=/usr   \ 
-            --host=$LFS_TGT \ 
-            --build=$(./build-aux/config.guess) 
-</code> 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS install 
-</code> 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.59.2. Содержимое пакета Diffutils|Разделе 8.59.2. «Содержимое пакета Diffutils.»]] 
- 
- 
-=====6.7. File-5.45===== 
- 
-|Пакет File содержит утилиту для определения типа указанного файла или файлов.|| 
-|Приблизительное время сборки:|0.1 SBU| 
-|Требуемое дисковое пространство:|37 MB| 
- 
-====6.7.1. Установка пакета File==== 
- 
-Команда file на хосте сборки должна быть той же версии, что и собираемая, чтобы создать файл подписи. Выполните следующие команды, чтобы создать временную копию команды file. 
- 
-<code> 
-mkdir build 
-pushd build 
-  ../configure --disable-bzlib      \ 
-               --disable-libseccomp \ 
-               --disable-xzlib      \ 
-               --disable-zlib 
-  make 
-popd 
-</code> 
- 
-===Значение параметров настройки:=== 
- 
-  * **--disable-** 
-Сценарий конфигурации пытается использовать некоторые пакеты из основного дистрибутива, если существуют соответствующие файлы библиотек. Это может привести к сбою компиляции, если файлы библиотек существует, но отсутствуют соответствующие заголовочные файлы. Эти параметры предотвращают использование ненужных возможностей хоста. 
- 
-Подготовьте файл для компиляции: 
- 
-<code> 
-./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess) 
-</code> 
- 
-Скомпилируйте пакет: 
- 
-<code> 
-make FILE_COMPILE=$(pwd)/build/src/file 
-</code> 
- 
-Установите пакет: 
- 
-<code> 
-make DESTDIR=$LFS install 
-</code> 
- 
-Удалите архивный файл libtool, поскольку он потенциально опасен при кросс-компиляции: 
- 
-<code> 
-rm -v $LFS/usr/lib/libmagic.la 
-</code> 
- 
-Подробная информация об этом пакете находится в [[software:linux_server:lfs:chapter08#8.10.2. Содержимое пакета File|Разделе 8.10.2. «Содержимое пакета File.»]] 
-=====6.8. Findutils-4.9.0===== 
- 
-|Пакет Findutils содержит программы для поиска файлов. Эти программы предназначены для поиска по всем файлам в дереве каталогов, а также для создания, обслуживания и поиска в базе данных (часто быстрее, чем рекурсивный поиск, но ненадежно, если база данных давно не обновлялась).Findutils также предоставляет программу xargs, которую можно использовать для запуска указанной команды для каждого файла, выбранного при поиске.|| 
-|Приблизительное время сборки:|0.1 SBU| 
-|Требуемое дисковое пространство:|42 MB| 
-=====6.9. Gawk-5.3.0===== 
-=====6.10. Grep-3.11===== 
-=====6.11. Gzip-1.13===== 
-=====6.12. Make-4.4.1===== 
-=====6.13. Patch-2.7.6===== 
-=====6.14. Sed-4.9===== 
-=====6.15. Tar-1.35===== 
-=====6.16. Xz-5.4.6===== 
-=====6.17. Binutils-2.42 - Проход 2===== 
-=====6.18. GCC-13.2.0 - Проход 2===== 
- 
- 
- 
- 
  
software/linux_server/lfs/chapter06.1719901977.txt.gz · Последнее изменение: vladpolskiy