diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-01-10 16:57:29 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-01-10 16:57:29 +0300 |
commit | c4d43142181a45b849a15cf8ec5ebe61cea33897 (patch) | |
tree | 459a90d19e6f1ece81fbf364c1b5292214d99615 /lfs-12.0-sysv/chapter08/binutils.html | |
parent | a044ba7b1561a513e33de0b7c1876aaa401a26d7 (diff) | |
download | sn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.tar.gz sn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.zip |
LFS 12 mirror
Diffstat (limited to 'lfs-12.0-sysv/chapter08/binutils.html')
-rw-r--r-- | lfs-12.0-sysv/chapter08/binutils.html | 656 |
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> |