Files
LFS_Book/chapter05/glibc.xml
Anton Maisak 5dc19c4951 typos
binutils
2018-05-24 16:37:34 +03:00

166 lines
9.1 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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(){}' &gt; 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>