mirror of
https://github.com/avmaisak/LFS_Book.git
synced 2026-01-14 02:00:45 +00:00
166 lines
9.1 KiB
XML
166 lines
9.1 KiB
XML
<?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-glibc" role="wrap">
|
||
<?dbhtml filename="glibc.html"?>
|
||
|
||
<sect1info condition="script">
|
||
<productname>glibc</productname>
|
||
<productnumber>&glibc-version;</productnumber>
|
||
<address>&glibc-url;</address>
|
||
</sect1info>
|
||
|
||
<title>Glibc-&glibc-version;</title>
|
||
|
||
<indexterm zone="ch-tools-glibc">
|
||
<primary sortas="a-Glibc">Glibc</primary>
|
||
<secondary>tools</secondary>
|
||
</indexterm>
|
||
|
||
<sect2 role="package">
|
||
<title/>
|
||
|
||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||
href="../chapter06/glibc.xml"
|
||
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
|
||
|
||
<segmentedlist>
|
||
<segtitle>&buildtime;</segtitle>
|
||
<segtitle>&diskspace;</segtitle>
|
||
|
||
<seglistitem>
|
||
<seg>&glibc-ch5-sbu;</seg>
|
||
<seg>&glibc-ch5-du;</seg>
|
||
</seglistitem>
|
||
</segmentedlist>
|
||
|
||
</sect2>
|
||
|
||
<sect2 role="installation">
|
||
<title>Установка пакета Glibc</title>
|
||
|
||
<para>В документации пакета Glibc рекомендуется выполнять сборку в отдельном каталоге:</para>
|
||
|
||
<screen><userinput remap="pre">mkdir -v build
|
||
cd build</userinput></screen>
|
||
|
||
<para>Подготовьте пакет Glibc к компиляции:</para>
|
||
|
||
<screen><userinput remap="configure">../configure \
|
||
--prefix=/tools \
|
||
--host=$LFS_TGT \
|
||
--build=$(../scripts/config.guess) \
|
||
--enable-kernel=&min-kernel; \
|
||
--with-headers=/tools/include \
|
||
libc_cv_forced_unwind=yes \
|
||
libc_cv_c_cleanup=yes</userinput></screen>
|
||
|
||
<variablelist>
|
||
<title>Значение параметров конфигурации:</title>
|
||
|
||
<varlistentry>
|
||
<term><parameter>--host=$LFS_TGT, --build=$(../scripts/config.guess)</parameter></term>
|
||
<listitem>
|
||
<para>Комбинация этих аргументов указывает системе сборки Glibc выполнять кросс-компиляцию пакета, используя кросс-компоновщик и кросс-компилятор из каталога <filename class="directory">/tools</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><parameter>--enable-kernel=&min-kernel;</parameter></term>
|
||
<listitem>
|
||
<para>Аргумент позволяет выполнять компиляцию с поддержкой ядер начиная с версии &min-kernel; и более поздних. Поддержка более старых ядер не будет включена.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><parameter>--with-headers=/tools/include</parameter></term>
|
||
<listitem>
|
||
<para>Аргумент позволяет выполнять компиляцию с указанием заголовочных файлов, установленных в каталог с временным набором инструментов, таким образом пакету будет известно, какие функции ядра используются, и будет выполнена оптимизация.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><parameter>libc_cv_forced_unwind=yes</parameter></term>
|
||
<listitem>
|
||
<para>компоновщик, установленный в главе <xref linkend="ch-tools-binutils-pass1"/> был кросс-компилирован и не может использоваться, пока не будет установлен пакет Glibc. Это означает, что тест конфигурирования для функции force-unwind будет провален,поскольку он полагается на рабочий компоновщик. Значение аргумента libc_cv_forced_unwind=yes передается, чтобы сообщить, сценарию <command>configure</command> что поддержка функция force-unwind доступна без необходимости проведения тестирования.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>libc_cv_c_cleanup=yes</parameter></term>
|
||
<listitem>
|
||
<para>Аналогично, передается значение аргумента libc_cv_c_cleanup=yes сценарию <command>configure</command> для того, чтобы тестирование не выполнялось и поддержка обработки очистки была сконфигурирована.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<!-- <varlistentry>
|
||
<term><parameter>libc_cv_ctors_header=yes</parameter></term>
|
||
<listitem>
|
||
<para>Similarly, we pass libc_cv_ctors_header=yes through to the
|
||
<command>configure</command> script so that the test is skipped and
|
||
gcc constructor support is configured.</para>
|
||
</listitem>
|
||
</varlistentry>-->
|
||
|
||
</variablelist>
|
||
|
||
<para>На этапе конфигурирования могут появиться следующие предупреждения:</para>
|
||
|
||
<blockquote>
|
||
<screen><computeroutput>configure: WARNING:
|
||
*** These auxiliary programs are missing or
|
||
*** incompatible versions: msgfmt
|
||
*** some features will be disabled.
|
||
*** Check the INSTALL file for required versions.</computeroutput></screen>
|
||
</blockquote>
|
||
|
||
<para>Отсутствие или несовместимость программы <command>msgfmt</command> безвредно. Это программа является частью пакета Gettext, который должен быть предоставлен хост-системой.</para>
|
||
|
||
<note><para>Сообщалось, что этот пакет может не компилироваться при выполнении процедуры "параллельной сборки". Если это произойдет, повторите команду make с аргументом "-j1".</para></note>
|
||
|
||
<para>Скомпилируйте пакет:</para>
|
||
|
||
<screen><userinput remap="make">make</userinput></screen>
|
||
|
||
<para>Установите пакет:</para>
|
||
|
||
<screen><userinput remap="install">make install</userinput></screen>
|
||
|
||
<caution>
|
||
<para>На этом этапе, необходимо остановиться, и проверить что базовый функционал (компиляция и линовка) созданных инструментов работает так, как необходимо. Чтобы выполнить проверку работоспособности, выполните следующие команды:</para>
|
||
|
||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||
$LFS_TGT-gcc dummy.c
|
||
readelf -l a.out | grep ': /tools'</userinput></screen>
|
||
|
||
<para>Если все работает правильно, не должно быть ошибок, и вывод последней команды будет иметь вид:</para>
|
||
|
||
<screen><computeroutput>[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
|
||
|
||
<para>Обратите внимание, что на 32-битной машине наименование интерпретатора будет:<filename>/tools/lib/ld-linux.so.2</filename>.</para>
|
||
|
||
<para>Если вывод не соответствует тому, как показано выше, или вообще вывода нет, значит,что-то не так. Изучите и повторите шаги выше, чтобы выяснить
|
||
где проблема и устраните её. Важно, устранить проблему до того, как вы продолжите следующие шаги.</para>
|
||
|
||
<para>Когда все будет хорошо, очистите тестовые файлы:</para>
|
||
|
||
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
|
||
|
||
</caution>
|
||
|
||
<note><para>При сборке пакета Binutils в следующем разделе, будут производиться дополнительные проверки, что временный набор инструментов был собран правильно. Если пакет Binutils не получится скомпилировать, или сконфигурировать, это будет явный признак того, что что-то пошло не так с предыдущими установками пакетов Binutils, GCC, или Glibc.</para></note>
|
||
|
||
</sect2>
|
||
|
||
<sect2 role="content">
|
||
<title/>
|
||
|
||
<para>Подробная информация об этом пакете находится в
|
||
<xref linkend="contents-glibc" role="."/></para>
|
||
|
||
</sect2>
|
||
|
||
</sect1>
|