summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter05
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/chapter05')
-rw-r--r--lfs-12.0-sysv/chapter05/binutils-pass1.html243
-rw-r--r--lfs-12.0-sysv/chapter05/chapter05.html110
-rw-r--r--lfs-12.0-sysv/chapter05/gcc-libstdc++.html214
-rw-r--r--lfs-12.0-sysv/chapter05/gcc-pass1.html334
-rw-r--r--lfs-12.0-sysv/chapter05/glibc.html361
-rw-r--r--lfs-12.0-sysv/chapter05/introduction.html94
-rw-r--r--lfs-12.0-sysv/chapter05/linux-headers.html315
7 files changed, 0 insertions, 1671 deletions
diff --git a/lfs-12.0-sysv/chapter05/binutils-pass1.html b/lfs-12.0-sysv/chapter05/binutils-pass1.html
deleted file mode 100644
index 05ba68a..0000000
--- a/lfs-12.0-sysv/chapter05/binutils-pass1.html
+++ /dev/null
@@ -1,243 +0,0 @@
-<!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.41 - Проход 1
- </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>
- Глава 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-13.2.0 - Проход 1">След.</a>
- <p>
- GCC-13.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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="wrap" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-binutils-pass1" name=
- "ch-tools-binutils-pass1"></a>5.2. Binutils-2.41 - Проход 1
- </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">1 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">647 MB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="en" xml:lang="en">
- <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</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>
- </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="en" xml:lang="en">
- <p>
- Подробная информация об этом пакете находится в <a class="xref"
- href="../chapter08/binutils.html#contents-binutils" title=
- "8.18.2. Содержимое пакета Binutils">Раздел&nbsp;8.18.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-13.2.0 - Проход 1">След.</a>
- <p>
- GCC-13.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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/chapter05.html b/lfs-12.0-sysv/chapter05/chapter05.html
deleted file mode 100644
index 65f7c25..0000000
--- a/lfs-12.0-sysv/chapter05/chapter05.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!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. Сборка кросс-тулчейна
- </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>
- Часть&nbsp;III.&nbsp;Сборка кросс-компилятора и набора временных
- инструментов
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="../partintro/generalinstructions.html"
- title="Общие инструкции по компиляции">Пред.</a>
- <p>
- Общие инструкции по компиляции
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="introduction.html" title=
- "Введение">След.</a>
- <p>
- Введение
- </p>
- </li>
- <li class="up">
- <a accesskey="u" href="../part3.html" title=
- "Часть&nbsp;III.&nbsp;Сборка кросс-компилятора и набора временных инструментов">
- Наверх</a>
- </li>
- <li class="home">
- <a accesskey="h" href="../index.html" title=
- "Линукс с нуля - Версия 12.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="chapter" lang="en" xml:lang="en">
- <h1 class="chapter">
- <a id="chapter-cross-tools" name="chapter-cross-tools"></a>5. Сборка
- кросс-тулчейна
- </h1>
- <div class="toc">
- <h3>
- Содержание
- </h3>
- <ul>
- <li class="sect1">
- <a href="introduction.html">Введение</a>
- </li>
- <li class="sect1">
- <a href="binutils-pass1.html">Binutils-2.41 - Проход 1</a>
- </li>
- <li class="sect1">
- <a href="gcc-pass1.html">GCC-13.2.0 - Проход 1</a>
- </li>
- <li class="sect1">
- <a href="linux-headers.html">Заголовочные файлы Linux-6.4.12
- API</a>
- </li>
- <li class="sect1">
- <a href="glibc.html">Glibc-2.38</a>
- </li>
- <li class="sect1">
- <a href="gcc-libstdc++.html">Libstdc++ из GCC-13.2.0</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="../partintro/generalinstructions.html"
- title="Общие инструкции по компиляции">Пред.</a>
- <p>
- Общие инструкции по компиляции
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="introduction.html" title=
- "Введение">След.</a>
- <p>
- Введение
- </p>
- </li>
- <li class="up">
- <a accesskey="u" href="../part3.html" title=
- "Часть&nbsp;III.&nbsp;Сборка кросс-компилятора и набора временных инструментов">
- Наверх</a>
- </li>
- <li class="home">
- <a accesskey="h" href="../index.html" title=
- "Линукс с нуля - Версия 12.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/gcc-libstdc++.html b/lfs-12.0-sysv/chapter05/gcc-libstdc++.html
deleted file mode 100644
index aa90e3d..0000000
--- a/lfs-12.0-sysv/chapter05/gcc-libstdc++.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!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.6. Libstdc++ из GCC-13.2.0
- </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>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="glibc.html" title="Glibc-2.38">Пред.</a>
- <p>
- Glibc-2.38
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="../chapter06/chapter06.html" title=
- "Кросс-Компиляция временных инструментов">След.</a>
- <p>
- Кросс-Компиляция временных инструментов
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="wrap" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-libstdcpp" name="ch-tools-libstdcpp"></a>5.6.
- Libstdc++ из GCC-13.2.0
- </h1>
- <div class="package" lang="en" xml:lang="en">
- <p>
- Libstdc++ — это стандартная библиотека C++. Она нужна для
- компиляции кода C++ (часть GCC написана на C++), когда мы собирали
- <a class="xref" href="gcc-pass1.html" title=
- "5.3. GCC-13.2.0 - Проход 1">GCC-Проход 1</a>, нам пришлось
- отложить её установку, потому что она зависит от библиотеки Glibc,
- которой еще не было в целевом каталоге.
- </p>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Приблизительное время сборки:</strong>
- <span class="segbody">0.2 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">1.1 GB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="en" xml:lang="en">
- <h2 class="sect2">
- 5.6.1. Установка библиотеки Libstdc++
- </h2>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- <span class="application">Libstdc++</span> является частью
- исходников GCC. Сначала вы должны распаковать архив GCC и перейти
- в каталог <code class="filename">gcc-13.2.0</code>.
- </p>
- </div>
- <p>
- Создайте отдельный каталог сборки для libstdc++ и перейдите в него:
- </p>
- <pre class="userinput"><kbd class="command">mkdir -v build
-cd build</kbd></pre>
- <p>
- Подготовьте libstdc++ к компиляции:
- </p>
- <pre class="userinput"><kbd class=
- "command">../libstdc++-v3/configure \
- --host=$LFS_TGT \
- --build=$(../config.guess) \
- --prefix=/usr \
- --disable-multilib \
- --disable-nls \
- --disable-libstdcxx-pch \
- --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</kbd></pre>
- <div class="variablelist">
- <p class="title">
- <strong>Значение параметров настройки:</strong>
- </p>
- <dl class="variablelist">
- <dt>
- <span class="term"><em class=
- "parameter"><code>--host=...</code></em></span>
- </dt>
- <dd>
- <p>
- Указывает, что кросс-компилятор, который мы только что
- создали, должен использоваться вместо того, который находится
- в <code class="filename">/usr/bin</code>.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--disable-libstdcxx-pch</code></em></span>
- </dt>
- <dd>
- <p>
- Этот аргумент предотвращает установку предварительно
- скомпилированных include-файлов, которые на данном этапе не
- нужны.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</code></em></span>
- </dt>
- <dd>
- <p>
- Указывает каталог установки для include-файлов. Поскольку
- libstdc++ является стандартной библиотекой C++ для LFS, этот
- каталог должен соответствовать местоположению, в котором
- компилятор C++ (<span class=
- "command"><strong>$LFS_TGT-g++</strong></span>) будет искать
- стандартные включаемые файлы C++. При обычной сборке эта
- информация автоматически передается в Libstdc++ при
- выполнении <span class=
- "command"><strong>configure</strong></span> из каталога
- верхнего уровня. В нашем случае эта информация должна быть
- указана явно. Компилятор C++ добавит путь sysroot
- <code class="filename">$LFS</code> (указанный при сборке GCC
- Проход 1) к пути поиска include-файлов, поэтому фактически он
- будет искать в <code class=
- "filename">$LFS/tools/$LFS_TGT/include/c++/13.2.0</code>.
- Комбинация переменной <em class=
- "parameter"><code>DESTDIR</code></em> (в приведенной ниже
- команде <span class="command"><strong>make
- install</strong></span>) и этого аргумента обеспечивает
- установку заголовочных файлов туда.
- </p>
- </dd>
- </dl>
- </div>
- <p>
- Скомпилируйте Libstdc++, выполнив:
- </p>
- <pre class="userinput"><kbd class="command">make</kbd></pre>
- <p>
- Установите библиотеку:
- </p>
- <pre class="userinput"><kbd class=
- "command">make DESTDIR=$LFS install</kbd></pre>
- <p>
- Удалите архивные файлы libtool, поскольку они потенциально опасны
- при кросс-компиляции:
- </p>
- <pre class="userinput"><kbd class=
- "command">rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la</kbd></pre>
- </div>
- <div class="content" lang="en" xml:lang="en">
- <p>
- Подробная информация об этом пакете приведена в <a class="xref"
- href="../chapter08/gcc.html#contents-gcc" title=
- "8.27.2. Содержимое пакета GCC">Раздел&nbsp;8.27.2, «Содержимое
- пакета GCC.»</a>
- </p>
- </div>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="glibc.html" title="Glibc-2.38">Пред.</a>
- <p>
- Glibc-2.38
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="../chapter06/chapter06.html" title=
- "Кросс-Компиляция временных инструментов">След.</a>
- <p>
- Кросс-Компиляция временных инструментов
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/gcc-pass1.html b/lfs-12.0-sysv/chapter05/gcc-pass1.html
deleted file mode 100644
index 004a062..0000000
--- a/lfs-12.0-sysv/chapter05/gcc-pass1.html
+++ /dev/null
@@ -1,334 +0,0 @@
-<!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.3. GCC-13.2.0 - Проход 1
- </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>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="binutils-pass1.html" title=
- "Binutils-2.41 - Проход 1">Пред.</a>
- <p>
- Binutils-2.41 - Проход 1
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="linux-headers.html" title=
- "Заголовочные файлы Linux-6.4.12 API">След.</a>
- <p>
- Заголовочные файлы Linux-6.4.12 API
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="wrap" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-gcc-pass1" name="ch-tools-gcc-pass1"></a>5.3.
- GCC-13.2.0 - Проход 1
- </h1>
- <div class="package" lang="en" xml:lang="en">
- <p>
- Пакет GCC содержит коллекцию компиляторов GNU, которая включает
- компиляторы C и C++.
- </p>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Приблизительное время сборки:</strong>
- <span class="segbody">3.5 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">4.2 GB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="en" xml:lang="en">
- <h2 class="sect2">
- 5.3.1. Установка кросс-пакета GCC
- </h2>
- <p>
- Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти пакеты
- могут отсутствовать в дистрибутиве вашего хоста, они будут собраны
- с помощью GCC. Распакуйте каждый пакет в исходный каталог GCC и
- переименуйте получившиеся каталоги, чтобы процедуры сборки GCC
- использовали их автоматически:
- </p>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- В этой главе часто возникают недоразумения, хотя применяются те
- же процедуры, что и в любой другой главе, следуйте инструкции
- которую получили ранее (<a class="xref" href=
- "../partintro/generalinstructions.html#buildinstr">Инструкции по
- сборке пакетов</a>). Сначала распакуйте пакет gcc-13.2.0 из
- архива, а затем перейдите в созданный каталог. Только после этого
- следует приступить к приведенным ниже инструкциям.
- </p>
- </div>
- <pre class="userinput"><kbd class=
- "command">tar -xf ../mpfr-4.2.0.tar.xz
-mv -v mpfr-4.2.0 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc</kbd></pre>
- <p>
- На хостах x86_64 установите имя каталога по умолчанию для 64-битных
- библиотек на <span class="quote">«<span class=
- "quote">lib</span>»</span>:
- </p>
- <pre class="userinput"><kbd class="command">case $(uname -m) in
- x86_64)
- sed -e '/m64=/s/lib64/lib/' \
- -i.orig gcc/config/i386/t-linux64
- ;;
-esac</kbd></pre>
- <p>
- В документации к GCC рекомендуется собирать GCC в отдельном
- каталоге:
- </p>
- <pre class="userinput"><kbd class="command">mkdir -v build
-cd build</kbd></pre>
- <p>
- Подготовьте GCC к компиляции:
- </p>
- <pre class="userinput"><kbd class=
- "command">../configure \
- --target=$LFS_TGT \
- --prefix=$LFS/tools \
- --with-glibc-version=2.38 \
- --with-sysroot=$LFS \
- --with-newlib \
- --without-headers \
- --enable-default-pie \
- --enable-default-ssp \
- --disable-nls \
- --disable-shared \
- --disable-multilib \
- --disable-threads \
- --disable-libatomic \
- --disable-libgomp \
- --disable-libquadmath \
- --disable-libssp \
- --disable-libvtv \
- --disable-libstdcxx \
- --enable-languages=c,c++</kbd></pre>
- <div class="variablelist">
- <p class="title">
- <strong>Значение параметров настройки:</strong>
- </p>
- <dl class="variablelist">
- <dt>
- <span class="term"><em class=
- "parameter"><code>--with-glibc-version=2.38</code></em></span>
- </dt>
- <dd>
- <p>
- Этот параметр указывает версию Glibc, которая будет
- использоваться на целевой системе. Он не имеет отношения к
- libc хост-дистрибутива, потому что все, скомпилированное в
- этом разделе, будет выполняться в среде chroot, которая
- изолирована от libc хост-дистрибутива.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--with-newlib</code></em></span>
- </dt>
- <dd>
- <p>
- Поскольку работающая библиотека C еще недоступна, это
- гарантирует, что константа inhibit_libc будет определена при
- сборке libgcc. Это предотвращает компиляцию любого кода,
- требующего поддержки libc.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--without-headers</code></em></span>
- </dt>
- <dd>
- <p>
- При создании полного кросс-компилятора GCC требует наличия
- стандартных заголовков, совместимых с целевой системой. Для
- наших целей эти заголовки не понадобятся. Этот параметр
- предотвращает их поиск GCC.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--enable-default-pie и
- --enable-default-ssp</code></em></span>
- </dt>
- <dd>
- <p>
- Эти параметры позволяют GCC по умолчанию компилировать
- программы с некоторые функциями усиливающими безопасность
- (более подробная информация о них приведена в <a class="xref"
- href="../chapter08/gcc.html#pie-ssp-info">примечание о PIE и
- SSP</a> в Главе 8). На данном этапе это не является строго
- обязательным, поскольку компилятор будет создавать только
- временные исполняемые файлы. Но лучше, чтобы временные пакеты
- были максимально приближены к тем, что будут в готовой
- системе LFS.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--disable-shared</code></em></span>
- </dt>
- <dd>
- <p>
- Этот параметр заставляет GCC статически связывать свои
- внутренние библиотеки. Он необходим потому что общие
- библиотеки требуют Glibc, который еще не установлен в целевой
- системе.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--disable-multilib</code></em></span>
- </dt>
- <dd>
- <p>
- Для платформы x86_64, LFS пока не поддерживает конфигурацию
- multilib. Этот аргумент ни как не повлияет, если установка
- выполняется на платформе x86.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--disable-threads, --disable-libatomic,
- --disable-libgomp, --disable-libquadmath, --disable-libssp,
- --disable-libvtv, --disable-libstdcxx</code></em></span>
- </dt>
- <dd>
- <p>
- Эти аргументы отключают поддержку расширений для работы с
- многопоточностью, libatomic, libgomp, libquadmath, libssp,
- libvtv и стандартной библиотеки C++ соответственно. Эти
- функции могут не скомпилироваться при сборке
- кросс-компилятора и не нужны для задач кросс-компиляции
- временной libc
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--enable-languages=c,c++</code></em></span>
- </dt>
- <dd>
- <p>
- Этот параметр обеспечивает сборку только компиляторов C и
- C++. Это единственные языки, которые нужны сейчас.
- </p>
- </dd>
- </dl>
- </div>
- <p>
- Скомпилируйте GCC, выполнив:
- </p>
- <pre class="userinput"><kbd class="command">make</kbd></pre>
- <p>
- Установите пакет:
- </p>
- <pre class="userinput"><kbd class="command">make install</kbd></pre>
- <p>
- Во время сборки GCC установил пару внутренних системных
- заголовочных файлов. Обычно один из файлов <code class=
- "filename">limits.h</code>, включает соответствующие системные
- ограничения <code class="filename">limits.h</code>, в данном случае
- <code class="filename">$LFS/usr/include/limits.h</code>. Однако во
- время сборки GCC <code class=
- "filename">$LFS/usr/include/limits.h</code> не существует, поэтому
- только что установленный внутренний заголовочный файл является
- частичным, автономным файлом и не включает расширенные функции
- системного файла. Этого достаточно для сборки Glibc, но полный
- внутренний заголовочный файл понадобится позже. Создайте полную
- версию внутреннего заголовочного файла с помощью команды,
- идентичной той, что система сборки GCC использует в обычных
- обстоятельствах:
- </p>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- В приведенной ниже команде показан пример подстановки вложенных
- команд, используя два метода: обратные кавычки и конструкцию
- <code class="literal">$()</code>. Его можно было бы переписать,
- используя один и тот же метод для обеих замен, но сделано так,
- чтобы продемонстрировать, как их можно использовать одновременно.
- В целом метод <code class="literal">$()</code> предпочтительнее.
- </p>
- </div>
- <pre class="userinput"><kbd class="command">cd ..
-cat gcc/limitx.h gcc/glimits.h gcc/limity.h &gt; \
- `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h</kbd></pre>
- </div>
- <div class="content" lang="en" xml:lang="en">
- <p>
- Подробная информация об этом пакете находится в <a class="xref"
- href="../chapter08/gcc.html#contents-gcc" title=
- "8.27.2. Содержимое пакета GCC">Раздел&nbsp;8.27.2, «Содержимое
- пакета GCC.»</a>
- </p>
- </div>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="binutils-pass1.html" title=
- "Binutils-2.41 - Проход 1">Пред.</a>
- <p>
- Binutils-2.41 - Проход 1
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="linux-headers.html" title=
- "Заголовочные файлы Linux-6.4.12 API">След.</a>
- <p>
- Заголовочные файлы Linux-6.4.12 API
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/glibc.html b/lfs-12.0-sysv/chapter05/glibc.html
deleted file mode 100644
index fbfc139..0000000
--- a/lfs-12.0-sysv/chapter05/glibc.html
+++ /dev/null
@@ -1,361 +0,0 @@
-<!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.5. Glibc-2.38
- </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>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="linux-headers.html" title=
- "Заголовочные файлы Linux-6.4.12 API">Пред.</a>
- <p>
- Заголовочные файлы Linux-6.4.12 API
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="gcc-libstdc++.html" title=
- "Libstdc++ из GCC-13.2.0">След.</a>
- <p>
- Libstdc++ из GCC-13.2.0
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="wrap" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-glibc" name="ch-tools-glibc"></a>5.5. Glibc-2.38
- </h1>
- <div class="package" lang="en" xml:lang="en">
- <p>
- Пакет Glibc содержит основную библиотеку C. Эта библиотека
- предоставляет основные процедуры для выделения памяти, поиска в
- каталогах, открытия и закрытия файлов, чтения и записи файлов,
- обработки строк, сопоставления с образцом, арифметики и так далее
- </p>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Приблизительное время сборки:</strong>
- <span class="segbody">1.6 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">858 MB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="en" xml:lang="en">
- <h2 class="sect2">
- 5.5.1. Установка пакета Glibc
- </h2>
- <p>
- Во-первых, создайте символическую ссылку для соответствия
- требованиям LSB. Кроме того, для совместимости с x86_64 создайте
- символическую ссылку, необходимую для правильной работы загрузчика
- динамической библиотеки:
- </p>
- <pre class="userinput"><kbd class="command">case $(uname -m) in
- i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
- ;;
- x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
- ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
- ;;
-esac</kbd></pre>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- Приведенная выше команда верна. Команда <span class=
- "command"><strong>ln</strong></span> имеет несколько вариантов
- синтаксиса, поэтому обязательно ознакомьтесь с <span class=
- "command"><strong>info coreutils ln</strong></span> и
- <code class="filename">ln(1)</code>, прежде чем сообщать об
- ошибке.
- </p>
- </div>
- <p>
- Некоторые программы, использующие Glibc, применяют несовместимый с
- FHS каталог <code class="filename">/var/db</code> для хранения
- своих данных времени выполнения. Установите следующий патч, чтобы
- такие программы хранили свои данные в местах, совместимых с FHS:
- </p>
- <pre class="userinput"><kbd class=
- "command">patch -Np1 -i ../glibc-2.38-fhs-1.patch</kbd></pre>
- <p>
- В документации к Glibc рекомендуется собирать Glibc в отдельном
- каталоге:
- </p>
- <pre class="userinput"><kbd class="command">mkdir -v build
-cd build</kbd></pre>
- <p>
- Убедитесь, что утилиты <span class=
- "command"><strong>ldconfig</strong></span> and <span class=
- "command"><strong>sln</strong></span> установлены в <code class=
- "filename">/usr/sbin</code>:
- </p>
- <pre class="userinput"><kbd class=
- "command">echo "rootsbindir=/usr/sbin" &gt; configparms</kbd></pre>
- <p>
- Затем подготовьте Glibc к компиляции:
- </p>
- <pre class="userinput"><kbd class=
- "command">../configure \
- --prefix=/usr \
- --host=$LFS_TGT \
- --build=$(../scripts/config.guess) \
- --enable-kernel=4.14 \
- --with-headers=$LFS/usr/include \
- libc_cv_slibdir=/usr/lib</kbd></pre>
- <div class="variablelist">
- <p class="title">
- <strong>Значение параметров настройки:</strong>
- </p>
- <dl class="variablelist">
- <dt>
- <span class="term"><em class="parameter"><code>--host=$LFS_TGT,
- --build=$(../scripts/config.guess)</code></em></span>
- </dt>
- <dd>
- <p>
- Комбинация этих опций указывает на то, что система сборки
- Glibc настраивается на кросс-компиляцию с использованием
- кросс-компоновщика и кросс-компилятора в <code class=
- "filename">$LFS/tools</code>.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--enable-kernel=4.14</code></em></span>
- </dt>
- <dd>
- <p>
- Этот параметр позволяет Glibc выполнять компиляцию библиотеки
- с поддержкой ядра 4.14 и более поздних версий. Поддержка
- более старых ядер не включена.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--with-headers=$LFS/usr/include</code></em></span>
- </dt>
- <dd>
- <p>
- Этот аргумент позволяет скомпилировать библиотеку с
- заголовочными файлами, недавно установленными в каталоге
- $LFS/usr/include, таким образом, пакету будет известно, какие
- функции есть у ядра, чтобы оптимизировать себя.
- </p>
- </dd>
- <dt>
- <span class="term"><em class=
- "parameter"><code>libc_cv_slibdir=/usr/lib</code></em></span>
- </dt>
- <dd>
- <p>
- Этот аргумент гарантирует, что библиотека будет установлена в
- /usr/lib вместо стандартного /lib64 на 64-битных машинах.
- </p>
- </dd>
- </dl>
- </div>
- <p>
- На этом этапе может появиться следующее предупреждение:
- </p>
- <div class="blockquote">
- <blockquote class="blockquote">
- <pre class="screen"><code class=
- "computeroutput">configure: WARNING:
-*** These auxiliary programs are missing or
-*** incompatible versions: msgfmt
-*** some features will be disabled.
-*** Check the INSTALL file for required versions.</code></pre>
- </blockquote>
- </div>
- <p>
- Отсутствующая или несовместимая программа <span class=
- "command"><strong>msgfmt</strong></span>, как правило, безвредна.
- <span class="command"><strong>msgfmt</strong></span> является
- частью пакета Gettext, который должен предоставлять
- хост-дистрибутив.
- </p>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- Поступали сообщения о том, что этот пакет может не
- компилироваться при "параллельной сборке". Если это произойдет,
- повторно запустите команду make с параметром "-j1".
- </p>
- </div>
- <p>
- Скомпилируйте пакет:
- </p>
- <pre class="userinput"><kbd class="command">make</kbd></pre>
- <p>
- Установите пакет:
- </p>
- <div class="admon warning">
- <img alt="[Предупреждение]" src="../images/warning.png" />
- <h3>
- Предупреждение
- </h3>
- <p>
- Если переменная <code class="envar">LFS</code> настроена
- неправильно, и, несмотря на рекомендации, вы выполняете сборку от
- имени пользователя <code class="systemitem">root</code>,
- следующая команда установит только что собранный Glibc в вашу
- хост-систему, что, скорее всего, сделает её непригодной для
- использования. Поэтому дважды проверьте, правильность настройки
- среды и что вы вошли в систему не под учетной записью
- <code class="systemitem">root</code>, прежде чем запускать
- следующую команду.
- </p>
- </div>
- <pre class="userinput"><kbd class=
- "command">make DESTDIR=$LFS install</kbd></pre>
- <div class="variablelist">
- <p class="title">
- <strong>Значение опции <span class="command"><strong>make
- install</strong></span>:</strong>
- </p>
- <dl class="variablelist">
- <dt>
- <span class="term"><em class=
- "parameter"><code>DESTDIR=$LFS</code></em></span>
- </dt>
- <dd>
- <p>
- Переменная make <code class="envar">DESTDIR</code>
- используется почти всеми пакетами для определения места
- установки пакета. Если она не задана, по умолчанию для
- установки используется корневой каталог (<code class=
- "filename">/</code>). Здесь мы указываем, что пакет должен
- быть установлен в $LFS, который станет корневым каталогом в
- <a class="xref" href="../chapter07/chroot.html" title=
- "7.4. Вход в окружение Chroot">Раздел&nbsp;7.4, «Вход в
- окружение Chroot»</a>.
- </p>
- </dd>
- </dl>
- </div>
- <p>
- Исправьте жестко запрограммированный путь к исполняемому загрузчику
- в <span class="command"><strong>ldd</strong></span>:
- </p>
- <pre class="userinput"><kbd class=
- "command">sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd</kbd></pre>
- <div class="admon caution">
- <img alt="[Внимание]" src="../images/caution.png" />
- <h3>
- Внимание
- </h3>
- <p>
- На этом этапе необходимо остановиться и убедиться, что основные
- функции (компиляция и компоновка) нового кросс-тулчейна работают
- должным образом. Чтобы выполнить проверку работоспособности,
- выполните следующие команды:
- </p>
- <pre class="userinput"><kbd class=
- "command">echo 'int main(){}' | $LFS_TGT-gcc -xc -
-readelf -l a.out | grep ld-linux</kbd></pre>
- <p>
- Если все работает правильно, ошибок быть не должно, и вывод
- последней команды будет иметь вид:
- </p>
- <pre class="screen"><code class=
- "computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code></pre>
- <p>
- Обратите внимание, что для 32-разрядных машин имя интерпретатора
- будет <code class="filename">/lib/ld-linux.so.2</code>.
- </p>
- <p>
- Если выходные данные отображаются не так, как указано выше, или
- их вообще нет, значит, что-то сделано неправильно. Разберитесь с
- проблемой и повторите шаги выше, чтобы исправить ее. Эта проблема
- должна быть решена, прежде чем вы продолжите.
- </p>
- <p>
- Как только все будет хорошо, удалите тестовый файл:
- </p>
- <pre class="userinput"><kbd class="command">rm -v a.out</kbd></pre>
- </div>
- <div class="admon note">
- <img alt="[Примечание]" src="../images/note.png" />
- <h3>
- Примечание
- </h3>
- <p>
- Сборка пакетов в следующей главе послужит дополнительной
- проверкой правильности сборки временного кросс-тулчейна. Если
- какой-либо пакет, особенно Binutils или GCC, не удается собрать,
- это указывает на то, что что-то пошло не так с установленными
- ранее Binutils, GCC, или Glibc.
- </p>
- </div>
- </div>
- <div class="content" lang="en" xml:lang="en">
- <p>
- Подробная информация об этом пакете находится в <a class="xref"
- href="../chapter08/glibc.html#contents-glibc" title=
- "8.5.3. Содержимое пакета Glibc">Раздел&nbsp;8.5.3, «Содержимое
- пакета Glibc.»</a>
- </p>
- </div>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="linux-headers.html" title=
- "Заголовочные файлы Linux-6.4.12 API">Пред.</a>
- <p>
- Заголовочные файлы Linux-6.4.12 API
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="gcc-libstdc++.html" title=
- "Libstdc++ из GCC-13.2.0">След.</a>
- <p>
- Libstdc++ из GCC-13.2.0
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/introduction.html b/lfs-12.0-sysv/chapter05/introduction.html
deleted file mode 100644
index 0d0f4d8..0000000
--- a/lfs-12.0-sysv/chapter05/introduction.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!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.1. Введение
- </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>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="chapter05.html" title=
- "Сборка кросс-тулчейна">Пред.</a>
- <p>
- Сборка кросс-тулчейна
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="binutils-pass1.html" title=
- "Binutils-2.41 - Проход 1">След.</a>
- <p>
- Binutils-2.41 - Проход 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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="sect1" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-introduction" name="ch-tools-introduction"></a>5.1.
- Введение
- </h1>
- <p>
- В этой главе дано описание, как создать кросс-компилятор и связанные
- с ним инструменты. Несмотря на то, что на данном этапе
- кросс-компиляция имитируется, принципы его работы те же, что и для
- настоящего кросс-тулчейна.
- </p>
- <p>
- Программы, скомпилированные в этой главе, будут установлены в каталог
- <code class="filename">$LFS/tools</code>, чтобы они были отделены от
- файлов, установленных в следующих главах. Библиотеки, же,
- устанавливаются на свое постоянное место, поскольку они относятся к
- системе, которую мы хотим создать.
- </p>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="chapter05.html" title=
- "Сборка кросс-тулчейна">Пред.</a>
- <p>
- Сборка кросс-тулчейна
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="binutils-pass1.html" title=
- "Binutils-2.41 - Проход 1">След.</a>
- <p>
- Binutils-2.41 - Проход 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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/lfs-12.0-sysv/chapter05/linux-headers.html b/lfs-12.0-sysv/chapter05/linux-headers.html
deleted file mode 100644
index dd00222..0000000
--- a/lfs-12.0-sysv/chapter05/linux-headers.html
+++ /dev/null
@@ -1,315 +0,0 @@
-<!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.4. Заголовочные файлы Linux-6.4.12 API
- </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>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="gcc-pass1.html" title=
- "GCC-13.2.0 - Проход 1">Пред.</a>
- <p>
- GCC-13.2.0 - Проход 1
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="glibc.html" title="Glibc-2.38">След.</a>
- <p>
- Glibc-2.38
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- <div class="wrap" lang="en" xml:lang="en">
- <h1 class="sect1">
- <a id="ch-tools-linux-headers" name="ch-tools-linux-headers"></a>5.4.
- Заголовочные файлы Linux-6.4.12 API
- </h1>
- <div class="package" lang="en" xml:lang="en">
- <p>
- Заголовочные файлы Linux API (в linux-6.4.12.tar.xz) предоставляют
- API ядра для использования Glibc.
- </p>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Приблизительное время сборки:</strong>
- <span class="segbody">менее 0.1 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">1.5 GB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="en" xml:lang="en">
- <h2 class="sect2">
- 5.4.1. Установка заголовочных файлов
- </h2>
- <p>
- Ядро Linux должно предоставлять интерфейс прикладного
- программирования (API) для использования системной библиотекой C
- (Glibc в LFS). Это делается путем установки заголовочных файлов C,
- которые поставляются в архиве с исходным кодом ядра Linux.
- </p>
- <p>
- Убедитесь, что в пакете нет устаревших файлов:
- </p>
- <pre class="userinput"><kbd class="command">make mrproper</kbd></pre>
- <p>
- Теперь извлеките видимые пользователю заголовочные файлы ядра из
- исходного кода. Рекомендуемый способ make <span class=
- "quote">«<span class="quote">headers_install</span>»</span>
- использовать нельзя, так как для этого требуется <span class=
- "application">rsync</span>, который может быть недоступен.
- Заголовочные файлы сначала помещаются в <code class=
- "filename">/usr</code>, а затем копируются в нужное место.
- </p>
- <pre class="userinput"><kbd class="command">make headers
-find usr/include -type f ! -name '*.h' -delete
-</kbd><kbd class="command">cp -rv usr/include $LFS/usr</kbd></pre>
- </div>
- <div class="content" lang="en" xml:lang="en">
- <h2 class="sect2">
- <a id="contents-linux-headers" name=
- "contents-linux-headers"></a>5.4.2. Содержимое заголовочных файлов
- Linux API
- </h2>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Установленные заголовочные
- файлы::</strong> <span class="segbody">/usr/include/asm/*.h,
- /usr/include/asm-generic/*.h, /usr/include/drm/*.h,
- /usr/include/linux/*.h, /usr/include/misc/*.h,
- /usr/include/mtd/*.h, /usr/include/rdma/*.h,
- /usr/include/scsi/*.h, /usr/include/sound/*.h,
- /usr/include/video/*.h, and /usr/include/xen/*.h</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Созданные каталоги::</strong>
- <span class="segbody">/usr/include/asm,
- /usr/include/asm-generic, /usr/include/drm, /usr/include/linux,
- /usr/include/misc, /usr/include/mtd, /usr/include/rdma,
- /usr/include/scsi, /usr/include/sound, /usr/include/video, and
- /usr/include/xen</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="asm" name="asm"></a><span class=
- "term"><code class="filename">/usr/include/asm/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API ASM
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="asm-generic" name="asm-generic"></a><span class=
- "term"><code class=
- "filename">/usr/include/asm-generic/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API ASM Generic
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="drm" name="drm"></a><span class=
- "term"><code class="filename">/usr/include/drm/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API DRM
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="linux" name="linux"></a><span class=
- "term"><code class=
- "filename">/usr/include/linux/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API Linux
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="misc" name="misc"></a><span class=
- "term"><code class=
- "filename">/usr/include/misc/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API Miscellaneous
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="mtd" name="mtd"></a><span class=
- "term"><code class="filename">/usr/include/mtd/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы API MTD
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="rdma" name="rdma"></a><span class=
- "term"><code class=
- "filename">/usr/include/rdma/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API RDMA
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="scsi" name="scsi"></a><span class=
- "term"><code class=
- "filename">/usr/include/scsi/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API SCSI
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="sound" name="sound"></a><span class=
- "term"><code class=
- "filename">/usr/include/sound/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API Sound
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="video" name="video"></a><span class=
- "term"><code class=
- "filename">/usr/include/video/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API Video
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <a id="xen" name="xen"></a><span class=
- "term"><code class="filename">/usr/include/xen/*.h</code></span>
- </p>
- </td>
- <td>
- <p>
- Заголовочные файлы Linux API Xen
- </p>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <div class="navfooter">
- <ul>
- <li class="prev">
- <a accesskey="p" href="gcc-pass1.html" title=
- "GCC-13.2.0 - Проход 1">Пред.</a>
- <p>
- GCC-13.2.0 - Проход 1
- </p>
- </li>
- <li class="next">
- <a accesskey="n" href="glibc.html" title="Glibc-2.38">След.</a>
- <p>
- Glibc-2.38
- </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.0">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>