diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-09-02 15:54:35 +0300 |
commit | 2203e654b389586650d553251b04544a34f189bf (patch) | |
tree | 0125b69fc70a2506c53158ba2020993a5b8985b7 /lfs-12.2-sysv/chapter05/binutils-pass1.html | |
parent | 200d528e55ca954d37769f4d143f10c9519b00e7 (diff) | |
download | sn4il-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.html | 282 |
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 ... && make + && 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">Раздел 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> |