lfs-ru/chapter06/binutils-pass2.xml
2024-02-22 16:04:54 +05:00

142 lines
5.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

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-binutils-pass2" role="wrap">
<?dbhtml filename="binutils-pass2.html"?>
<sect1info condition="script">
<productname>binutils-pass2</productname>
<productnumber>&binutils-version;</productnumber>
<address>&binutils-url;</address>
</sect1info>
<title>Binutils-&binutils-version; - Проход 2</title>
<indexterm zone="ch-tools-binutils-pass2">
<primary sortas="a-Binutils">Binutils</primary>
<secondary>tools, pass 2</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter08/binutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&binutils-tmpp2-sbu;</seg>
<seg>&binutils-tmpp2-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Установка пакета Binutils</title>
<!-- Don't remove this until Binutils upstream resolves this issue.
We can test by building Binutils on a complete system with
zlib (libz.so) installed, passing enable-shared and
without-system-zlib. If the resulted libctf.so still links against
libz.so (check with readelf -d) despite we are saying
without-system-zlib, then the issue is still unresolved. -->
<para>Система сборки Binutils использует содержащуюся в пакете копию libtool для линковки
с внутренними статическими библиотеками, но копии libiberty и zlib, поставляемые с пакетом,
не используют libtool. Это несоответствие может привести к тому, что созданные двоичные
файлы будут ошибочно связаны с библиотеками из основного дистрибутива. Решение этой
проблемы:</para>
<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
<para>Создайте отдельный каталог для сборки:</para>
<screen><userinput remap="pre">mkdir -v build
cd build</userinput></screen>
<para>Подготовьте Binutils к компиляции:</para>
<screen arch="default"><userinput remap="configure">../configure \
--prefix=/usr \
--build=$(../config.guess) \
--host=$LFS_TGT \
--disable-nls \
--enable-shared \
--enable-gprofng=no \
--disable-werror \
--enable-64-bit-bfd \
--enable-default-hash-style=gnu</userinput></screen>
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure \
--prefix=/usr \
--build=$(../config.guess) \
--host=$LFS_TGT \
--disable-nls \
--enable-shared \
--enable-gprofng=no \
--disable-werror \
--enable-64-bit-bfd \
--enable-default-hash-style=gnu \
--enable-multilib</userinput></screen>
<variablelist>
<title>Значение новых параметров настройки:</title>
<varlistentry>
<term><parameter>--enable-shared</parameter></term>
<listitem>
<para>Собирает <filename
class="libraryfile">libbfd</filename> как разделяемую библиотеку</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-64-bit-bfd</parameter></term>
<listitem>
<para>Включает 64-разрядную поддержку (на хостах с меньшим размером слова).
В 64-разрядных системах это может и не понадобиться, но вреда от этого не будет</para>
</listitem>
</varlistentry>
<varlistentry arch="ml_32,ml_x32,ml_all">
<term><parameter>--enable-multilib</parameter></term>
<listitem>
<para>Включает поддержку multilib в bintutils.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Скомпилируйте пакет:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Установите пакет:</para>
<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
<para>Удалите архивные файлы libtool, поскольку они потенциально опасны при
кросс-компиляции, также удалите ненужные статические библиотеки</para>
<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Подробная информация об этом пакете находится в
<xref linkend="contents-binutils" role="."/></para>
</sect2>
</sect1>