summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter08/binutils.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/chapter08/binutils.html')
-rw-r--r--lfs-12.0-sysv/chapter08/binutils.html656
1 files changed, 656 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter08/binutils.html b/lfs-12.0-sysv/chapter08/binutils.html
new file mode 100644
index 0000000..7248a33
--- /dev/null
+++ b/lfs-12.0-sysv/chapter08/binutils.html
@@ -0,0 +1,656 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 8.18. Binutils-2.41
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 8. Установка базового системного программного обеспечения
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="dejagnu.html" title=
+ "DejaGNU-1.6.3">Пред.</a>
+ <p>
+ DejaGNU-1.6.3
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="gmp.html" title="GMP-6.3.0">След.</a>
+ <p>
+ GMP-6.3.0
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-system-binutils" name="ch-system-binutils"></a>8.18.
+ Binutils-2.41
+ </h1>
+ <div class="package" lang="en" xml:lang="en">
+ <p>
+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты
+ для работы с объектными файлами.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">2.2 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">2.7 GB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ 8.18.1. Установка пакета Binutils
+ </h2>
+ <p>
+ Документация Binutils рекомендует выполнять компиляцию в отдельном
+ каталоге:
+ </p>
+ <pre class="userinput"><kbd class="command">mkdir -v build
+cd build</kbd></pre>
+ <p>
+ Подготовьте Binutils к компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">../configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-gold \
+ --enable-ld=default \
+ --enable-plugins \
+ --enable-shared \
+ --disable-werror \
+ --enable-64-bit-bfd \
+ --with-system-zlib</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров настройки:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-gold</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Собирает компоновщик gold и устанавливает его как ld.gold
+ (вместе с компоновщиком по умолчанию).
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-ld=default</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Собирает оригинальный компоновщик bfd и устанавливает его как
+ ld (компоновщик по умолчанию) и как ld.bfd
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-plugins</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включает поддержку плагинов для компоновщика.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-64-bit-bfd</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включает 64-разрядную поддержку (на хостах с ограниченным
+ размерам слов). Может не понадобится в 64-разрядных системах,
+ но вреда от этого не будет.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--with-system-zlib</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Использовать установленную библиотеку zlib вместо сборки
+ собственной.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Скомпилируйте пакет:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make tooldir=/usr</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметра make:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>tooldir=/usr</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Обычно для tooldir (каталога, в котором будут расположены
+ исполняемые файлы) установлено значение <code class=
+ "filename">$(exec_prefix)/$(target_alias)</code>. Например,
+ машины x86_64 преобразуют это значение в <code class=
+ "filename">/usr/x86_64-unknown-linux-gnu</code>. Поскольку
+ это пользовательская система, то целевой каталог в
+ <code class="filename">/usr</code> не требуется. Параметр
+ <code class="filename">$(exec_prefix)/$(target_alias)</code>
+ использовался, если бы система применялась для
+ кросс-компиляции (например, при компиляции пакета на
+ компьютере Intel, который генерирует код, который может быть
+ выполнен на компьютерах PowerPC).
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Набор тестов для Binutils в этом разделе считается критически
+ важным. Ни в коем случае не пропускайте его.
+ </p>
+ </div>
+ <p>
+ Выполните тестирование:
+ </p>
+ <pre class="userinput"><kbd class="command">make -k check</kbd></pre>
+ <p>
+ Чтобы получить список неудачных тестов, запустите:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">grep '^FAIL:' $(find -name '*.log')</kbd></pre>
+ <p>
+ Двенадцать тестов завершаются неудачно в наборе тестов gold, когда
+ GCC собирается с параметрами <code class=
+ "option">--enable-default-pie</code> и <code class=
+ "option">--enable-default-ssp</code>.
+ </p>
+ <p>
+ Также известно, что завершаются неудачно три теста в пакете
+ gprofng.
+ </p>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make tooldir=/usr install</kbd></pre>
+ <p>
+ Удалите бесполезные статические библиотеки:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a</kbd></pre>
+ </div>
+ <div class="content" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="contents-binutils" name="contents-binutils"></a>8.18.2.
+ Содержимое пакета Binutils
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные программы:</strong>
+ <span class="segbody">addr2line, ar, as, c++filt, dwp, elfedit,
+ gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump,
+ ranlib, readelf, size, strings и strip</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Установленные библиотеки:</strong>
+ <span class="segbody">libbfd.so, libctf.so, libctf-nobfd.so,
+ libgprofng.so, libopcodes.so и libsframe.so</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/usr/lib/ldscripts</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Краткое описание
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="addr2line" name="addr2line"></a><span class=
+ "term"><span class=
+ "command"><strong>addr2line</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Переводит адреса программ в имена файлов и номера строк;
+ учитывая адрес и имя исполняемого файла, использует
+ отладочную информацию в исполняемом файле, для
+ определения файла исходного кода и номера строки,
+ ассоциированной с адресом
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ar" name="ar"></a><span class="term"><span class=
+ "command"><strong>ar</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Создаёт, изменяет и распаковывает архивы
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="as" name="as"></a><span class="term"><span class=
+ "command"><strong>as</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Ассемблер, который собирает результат работы <span class=
+ "command"><strong>gcc</strong></span> в объектные файлы
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="c-filt" name="c-filt"></a><span class=
+ "term"><span class=
+ "command"><strong>c++filt</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Используется компоновщиком для исправления символов C++ и
+ Java и предотвращения конфликтов перегруженных функций.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="dwp" name="dwp"></a><span class=
+ "term"><span class="command"><strong>dwp</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Утилита для упаковки DWARF
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="elfedit" name="elfedit"></a><span class=
+ "term"><span class=
+ "command"><strong>elfedit</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Обновляет ELF заголовки в ELF файлах
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gprof" name="gprof"></a><span class=
+ "term"><span class=
+ "command"><strong>gprof</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Отображает в графическом виде информацию о профилировании
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="gprofng" name="gprofng"></a><span class=
+ "term"><span class=
+ "command"><strong>gprofng</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Собирает и анализирует данные о производительности
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ld" name="ld"></a><span class="term"><span class=
+ "command"><strong>ld</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Компоновщик, который объединяет несколько объектных и
+ архивных файлов в один файл, перемещая их данные и
+ связывая символическими ссылками
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ld.gold" name="ld.gold"></a><span class=
+ "term"><span class=
+ "command"><strong>ld.gold</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Урезанная версия ld, которая поддерживает только формат
+ объектных файлов elf
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ld.bfd" name="ld.bfd"></a><span class=
+ "term"><span class=
+ "command"><strong>ld.bfd</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Жесткая ссылка на <span class=
+ "command"><strong>ld</strong></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="nm" name="nm"></a><span class="term"><span class=
+ "command"><strong>nm</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Выводит список символов, используемых в данном объектном
+ файле
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="objcopy" name="objcopy"></a><span class=
+ "term"><span class=
+ "command"><strong>objcopy</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Преобразует один тип объектного файла в другой
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="objdump" name="objdump"></a><span class=
+ "term"><span class=
+ "command"><strong>objdump</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Отображает информацию о данном объектном файле; можно
+ указать параметры, определяющие, какая конкретно
+ информация будет отображаться. Отображаемая информация
+ полезна для программистов, которые работают над
+ инструментами, используемыми при компиляции
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="ranlib" name="ranlib"></a><span class=
+ "term"><span class=
+ "command"><strong>ranlib</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Создает индекс содержимого архива и сохраняет его в
+ архиве; в индексе перечислены все символы, определенные в
+ перемещаемых объектных файлах, содержащихся в архиве
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="readelf" name="readelf"></a><span class=
+ "term"><span class=
+ "command"><strong>readelf</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Отображает информацию о двоичных файлах типа ELF
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="size" name="size"></a><span class=
+ "term"><span class=
+ "command"><strong>size</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Отображает размеры секций и общий размер указанных
+ объектных файлов
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="strings" name="strings"></a><span class=
+ "term"><span class=
+ "command"><strong>strings</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Выводит для каждого указанного файла последовательности
+ печатаемых символов, которые имеют по крайней мере
+ указанную длину (по умолчанию четыре); для объектных
+ файлов по умолчанию печатаются только строки из секций
+ инициализации и загрузки, в то время как для других
+ файлов он сканирует весь файл.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="strip" name="strip"></a><span class=
+ "term"><span class=
+ "command"><strong>strip</strong></span></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Удаляет символы из объектных файлов
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libbfd" name="libbfd"></a><span class=
+ "term"><code class="filename">libbfd</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека дескрипторов двоичных файлов
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libctf" name="libctf"></a><span class=
+ "term"><code class="filename">libctf</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека отладки формата Compat ANSI-C Type
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libctf-nobfd" name="libctf-nobfd"></a><span class=
+ "term"><code class="filename">libctf-nobfd</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Вариант libctf, не использующий функциональность libbfd.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libgprofng" name="libgprofng"></a><span class=
+ "term"><code class="filename">libgprofng</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека, содержащая большинство подпрограмм,
+ используемых <span class=
+ "command"><strong>gprofng</strong></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libopcodes" name="libopcodes"></a><span class=
+ "term"><code class="filename">libopcodes</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека для работы с опкодами—<span class=
+ "quote">«<span class="quote">читаемыми</span>»</span>
+ версиями инструкций для процессора. Используется для
+ сборки таких утилит как <span class=
+ "command"><strong>objdump</strong></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="libsframe" name="libsframe"></a><span class=
+ "term"><code class="filename">libsframe</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Библиотека для поддержки обратной онлайн-трассировки с
+ использованием простого декодера разделов .sframe.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="dejagnu.html" title=
+ "DejaGNU-1.6.3">Пред.</a>
+ <p>
+ DejaGNU-1.6.3
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="gmp.html" title="GMP-6.3.0">След.</a>
+ <p>
+ GMP-6.3.0
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>