2022-05-18 23:57:01 +03:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
|
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
|
|
|
%general-entities;
|
|
|
|
|
]>
|
|
|
|
|
|
|
|
|
|
<sect1 id="ch-tools-generalinstructions"
|
2023-05-24 15:27:52 +03:00
|
|
|
|
xreflabel="Общие инструкции по компиляции">
|
2022-05-18 23:57:01 +03:00
|
|
|
|
<?dbhtml filename="generalinstructions.html"?>
|
|
|
|
|
|
|
|
|
|
<title>Общие инструкции по компиляции</title>
|
|
|
|
|
|
2023-09-05 11:37:11 +03:00
|
|
|
|
<caution>
|
|
|
|
|
<para>
|
|
|
|
|
В процессе разработки LFS инструкции в книге часто изменяются, чтобы адаптироваться
|
|
|
|
|
к обновлению пакета или использовать преимущества новых функций из обновленных пакетов.
|
|
|
|
|
Смешение инструкций разных версий книги LFS может привести к незначительным поломкам.
|
|
|
|
|
Такого рода проблемы обычно являются результатом повторного использования некоторых
|
|
|
|
|
скриптов, созданных для предыдущей версии LFS. Такое повторное использование настоятельно
|
|
|
|
|
не рекомендуется. Если вы по какой-либо причине повторно используете скрипты из предыдущей
|
|
|
|
|
версии LFS, вам нужно быть очень осторожным при обновлении скриптов, чтобы они соответствовали
|
|
|
|
|
текущей версии книги LFS.
|
|
|
|
|
</para>
|
|
|
|
|
</caution>
|
|
|
|
|
|
2022-05-18 23:57:01 +03:00
|
|
|
|
<para>При сборке пакетов в инструкциях делается несколько допущений:</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>На некоторые пакеты необходимо наложить патчи перед компиляцией,
|
2023-08-02 23:14:31 +03:00
|
|
|
|
метод используется тогда, когда исправление необходимо для решения проблем сборки.
|
|
|
|
|
Патчи часто требуются как в этой, так и в следующих главах, но иногда, когда один
|
2023-06-23 10:26:42 +03:00
|
|
|
|
и тот же пакет собирается более одного раза, патч требуется не сразу. Поэтому не
|
|
|
|
|
беспокойтесь, если инструкции для скачанного патча отсутствуют.
|
|
|
|
|
Предупреждающие сообщения о <emphasis>смещении (offset)</emphasis> или
|
|
|
|
|
<emphasis>размытии (fuzz)</emphasis> также могут появляться при применении патча. Не
|
|
|
|
|
обращайте внимания на эти предупреждения, патч все равно успешно применен.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Во время компиляции большинства пакетов на экране будут отображаться
|
|
|
|
|
предупреждения. Это нормально, и их можно смело игнорировать. Предупреждения
|
|
|
|
|
появляются, например, когда используется устаревший, недопустимый синтаксис
|
|
|
|
|
C или C++. Стандарты C меняются довольно часто, и некоторые пакеты все еще
|
2023-06-23 10:26:42 +03:00
|
|
|
|
используют более старый стандарт. Это не является серьезной проблемой, но вызывает
|
|
|
|
|
появление предупреждений.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Проверьте в последний раз, что переменная среды <envar>LFS</envar>
|
|
|
|
|
настроена правильно:</para>
|
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>echo $LFS</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>Убедитесь, что в выводе указан путь к точке монтирования раздела LFS,
|
|
|
|
|
то есть <filename class="directory">/mnt/lfs</filename>, как в примере из
|
|
|
|
|
этой книги.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
|
|
|
|
|
<para>Наконец, необходимо подчеркнуть два важных момента:</para>
|
|
|
|
|
|
|
|
|
|
<important>
|
|
|
|
|
|
2023-06-22 21:45:00 +03:00
|
|
|
|
<para>Инструкции по сборке предполагают, что все <xref
|
2022-05-18 23:57:01 +03:00
|
|
|
|
linkend='ch-partitioning-hostreqs'/>, включая символические ссылки,
|
|
|
|
|
установлены правильно:</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist role='important'>
|
|
|
|
|
|
|
|
|
|
<listitem override='bullet'><para><command>bash</command> это
|
|
|
|
|
используемая оболочка.</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem override='bullet'><para><command>sh</command> это
|
|
|
|
|
символическая ссылка на <command>bash</command>.</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem override='bullet'><para><command>/usr/bin/awk</command> это
|
|
|
|
|
символическая ссылка на <command>gawk</command>.</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem override='bullet'><para><command>/usr/bin/yacc</command> это
|
|
|
|
|
символическая ссылка на <command>bison</command> или небольшой скрипт,
|
|
|
|
|
который выполняет bison</para></listitem>
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</important>
|
|
|
|
|
|
|
|
|
|
<important>
|
2023-06-23 10:26:42 +03:00
|
|
|
|
<para>Вот краткое описание процесса сборки:</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
|
|
|
|
|
<orderedlist numeration="arabic" spacing="compact">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Поместите все исходники и патчи в каталог, который будет доступен из
|
|
|
|
|
среды chroot, например, <filename class="directory">/mnt/lfs/sources/</filename>.<!-- Do
|
|
|
|
|
<emphasis>not</emphasis> put sources in
|
|
|
|
|
<filename class="directory">/mnt/lfs/tools/</filename>. --></para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
2023-06-23 10:26:42 +03:00
|
|
|
|
<para>Перейдите в каталог <filename class="directory">/mnt/lfs/sources/</filename>.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
2023-06-22 21:45:00 +03:00
|
|
|
|
<listitem id='buildinstr' xreflabel='Инструкции по сборке пакетов'>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
<para>Для каждого пакета:</para>
|
|
|
|
|
<orderedlist numeration="loweralpha" spacing="compact">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>С помощью программы <command>tar</command> извлеките пакет для
|
|
|
|
|
сборки. В <xref linkend="chapter-cross-tools"/> и
|
|
|
|
|
<xref linkend="chapter-temporary-tools"/> убедитесь, что при извлечении
|
|
|
|
|
пакета вы залогинены под пользователем lfs.</para>
|
|
|
|
|
|
2023-06-23 10:26:42 +03:00
|
|
|
|
<para>Не используйте никаких методов, кроме команды <command>tar</command>,
|
|
|
|
|
для извлечения исходного кода. Примечательно, что использование команды
|
|
|
|
|
<command>cp -R</command> для копирования дерева исходного кода в другое
|
|
|
|
|
место может привести к уничтожению ссылок и меток времени в дереве исходного
|
|
|
|
|
кода и привести к сбою сборки.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Перейдите в каталог, созданный при извлечении пакета.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
2023-06-23 10:26:42 +03:00
|
|
|
|
<para>Следуйте инструкциям по сборке пакета.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
2023-06-23 10:26:42 +03:00
|
|
|
|
<para>Вернитесь в исходный каталог, когда сборка будет завершена.</para>
|
2022-05-18 23:57:01 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Удалите извлеченный каталог, если не указано иное.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</important>
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
</sect1>
|