summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter05/binutils-pass1.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
committerSn4il <sn4il@thedroth.rocks>2024-09-02 15:54:35 +0300
commit2203e654b389586650d553251b04544a34f189bf (patch)
tree0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter05/binutils-pass1.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.2-sysv/chapter05/binutils-pass1.html')
-rw-r--r--lfs-12.2-sysv/chapter05/binutils-pass1.html282
1 files changed, 282 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter05/binutils-pass1.html b/lfs-12.2-sysv/chapter05/binutils-pass1.html
new file mode 100644
index 0000000..fc7cd08
--- /dev/null
+++ b/lfs-12.2-sysv/chapter05/binutils-pass1.html
@@ -0,0 +1,282 @@
+<!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>
+ 5.2. Binutils-2.43.1 - Проход 1
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <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.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 5. Сборка кросс-тулчейна
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="gcc-pass1.html" title=
+ "GCC-14.2.0 - Проход 1">След.</a>
+ <p>
+ GCC-14.2.0 - Проход 1
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-tools-binutils-pass1" name="ch-tools-binutils-pass1"></a>5.2.
+ Binutils-2.43.1 - Проход 1
+ </h1>
+ <div class="wrap" lang="ru" xml:lang="ru">
+ <div class="package" lang="ru" xml:lang="ru">
+ <p>
+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты
+ для работы с объектными файлами.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">1 SBU</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">677 MB</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ 5.2.1. Установка кросс-пакета Binutils
+ </h2>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Вернитесь назад и перечитайте примечания в разделе <a class=
+ "xref" href="../partintro/generalinstructions.html" title=
+ "Общие инструкции по компиляции">Общие инструкции по
+ компиляции</a>. Понимание информации, помеченной как важная,
+ может впоследствии избавить вас от многих проблем.
+ </p>
+ </div>
+ <p>
+ Очень важно, чтобы Binutils был скомпилированным первым, потому что
+ и Glibc, и GCC выполняют различные тесты на доступных компоновщике
+ и ассемблере, чтобы определить, какие из их функций следует
+ включить.
+ </p>
+ <p>
+ В документации пакета Binutils рекомендуется выполнять сборку в
+ отдельном каталоге, создадим его:
+ </p>
+ <pre class="userinput"><kbd class="command">mkdir -v build
+cd build</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Для того, чтобы значения SBU, перечисленные в остальной части
+ книги, были вам полезны, измерьте время, необходимое для сборки
+ этого пакета, начиная с настройки и заканчивая установкой. Чтобы
+ добиться этого, оберните команды сборки командой <span class=
+ "command"><strong>time</strong></span>: <strong class=
+ "userinput"><code>time { ../configure ... &amp;&amp; make
+ &amp;&amp; make install; }</code></strong>.
+ </p>
+ </div>
+ <p>
+ Теперь подготовьте Binutils к компиляции:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">../configure --prefix=$LFS/tools \
+ --with-sysroot=$LFS \
+ --target=$LFS_TGT \
+ --disable-nls \
+ --enable-gprofng=no \
+ --disable-werror \
+ --enable-new-dtags \
+ --enable-default-hash-style=gnu</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров настройки:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--prefix=$LFS/tools</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Указывает сценарию configure подготовить к установке пакет
+ Binutils в каталог <code class="filename">$LFS/tools</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--with-sysroot=$LFS</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Для кросс-компляции указывает системе сборки искать в $LFS
+ библиотеки целевой системы, если необходимо.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><code class=
+ "envar">--target=$LFS_TGT</code></span>
+ </dt>
+ <dd>
+ <p>
+ Поскольку название машины в значении переменной <code class=
+ "envar">LFS_TGT</code> может отличаться от значения, которое
+ возвращает сценарий <span class=
+ "command"><strong>config.guess</strong></span>, этот аргумент
+ укажет сценарию <span class=
+ "command"><strong>configure</strong></span> как настроить
+ систему сборки пакета Binutils для создания
+ кросс-компоновщика.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--disable-nls</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр отключает интернационализацию, так как i18n не
+ требуется для временных инструментов.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-gprofng=no</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр отключает сборку gprofng, который не нужен для
+ временного инструментария.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--disable-werror</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр предотвращает остановку сборки в случае
+ появления предупреждений от компилятора хоста.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-new-dtags</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр заставляет компоновщик использовать тег
+ <span class="quote">«<span class=
+ "quote">runpath</span>»</span> для встраивания путей поиска
+ библиотек в исполняемые файлы и общие библиотеки вместо
+ традиционного тега <span class="quote">«<span class=
+ "quote">rpath</span>»</span>. Это упрощает отладку
+ динамически подключаемых исполняемых файлов и устраняет
+ потенциальные проблемы в наборах тестов некоторых пакетов.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>--enable-default-hash-style=gnu</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ По умолчанию компоновщик генерирует как хеш-таблицу в стиле
+ GNU, так и классическую хеш-таблицу ELF для общих библиотек и
+ динамически связанных исполняемых файлов. Хеш-таблицы
+ необходимы только для динамического компоновщика,
+ выполняющего поиск символов. В LFS динамический компоновщик
+ (предоставляемый пакетом Glibc) всегда будет использовать
+ хеш-таблицу в стиле GNU, к которой запросы выполняются
+ быстрее. Так что классическая хеш-таблица ELF совершенно
+ бесполезна. Этот параметр указывает компоновщику по умолчанию
+ генерировать только хеш-таблицу в стиле GNU, поэтому мы можем
+ избежать траты времени на создание классической хеш-таблицы
+ ELF при сборке пакетов или не тратить дисковое пространство
+ для ее хранения.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Скомпилируйте пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make</kbd></pre>
+ <p>
+ Установите пакет:
+ </p>
+ <pre class="userinput"><kbd class="command">make install</kbd></pre>
+ </div>
+ <div class="content" lang="ru" xml:lang="ru">
+ <p>
+ Подробная информация об этом пакете находится в <a class="xref"
+ href="../chapter08/binutils.html#contents-binutils" title=
+ "8.20.2. Содержимое пакета Binutils">Раздел&nbsp;8.20.2,
+ «Содержимое пакета Binutils.»</a>
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="gcc-pass1.html" title=
+ "GCC-14.2.0 - Проход 1">След.</a>
+ <p>
+ GCC-14.2.0 - Проход 1
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>