summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/chapter05/glibc.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.1-sysv/chapter05/glibc.html
parent200d528e55ca954d37769f4d143f10c9519b00e7 (diff)
downloadsn4il-site-2203e654b389586650d553251b04544a34f189bf.tar.gz
sn4il-site-2203e654b389586650d553251b04544a34f189bf.zip
LFS 12.2
Diffstat (limited to 'lfs-12.1-sysv/chapter05/glibc.html')
-rw-r--r--lfs-12.1-sysv/chapter05/glibc.html374
1 files changed, 0 insertions, 374 deletions
diff --git a/lfs-12.1-sysv/chapter05/glibc.html b/lfs-12.1-sysv/chapter05/glibc.html
deleted file mode 100644
index 4c5d12f..0000000
--- a/lfs-12.1-sysv/chapter05/glibc.html
+++ /dev/null
@@ -1,374 +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.39
- </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.1">
- <div class="navheader">
- <h4>
- Линукс с нуля - Версия 12.1
- </h4>
- <h3>
- Глава 5. Сборка кросс-тулчейна
- </h3>
- <ul>
- <li class="prev">
- <a accesskey="p" href="linux-headers.html" title=
- "Заголовочные файлы Linux-6.7.4 API">Пред.</a>
- <p>
- Заголовочные файлы Linux-6.7.4 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.1">Начало</a>
- </li>
- </ul>
- </div>
- <h1 class="sect1">
- <a id="ch-tools-glibc" name="ch-tools-glibc"></a>5.5. Glibc-2.39
- </h1>
- <div class="wrap" lang="ru" xml:lang="ru">
- <div class="package" lang="ru" xml:lang="ru">
- <p>
- Пакет Glibc содержит основную библиотеку C. Эта библиотека
- предоставляет основные процедуры для выделения памяти, поиска в
- каталогах, открытия и закрытия файлов, чтения и записи файлов,
- обработки строк, сопоставления с образцом, арифметики и так далее
- </p>
- <div class="segmentedlist">
- <div class="seglistitem">
- <div class="seg">
- <strong class="segtitle">Приблизительное время сборки:</strong>
- <span class="segbody">1.5 SBU</span>
- </div>
- <div class="seg">
- <strong class="segtitle">Требуемое дисковое
- пространство:</strong> <span class="segbody">846 MB</span>
- </div>
- </div>
- </div>
- </div>
- <div class="installation" lang="ru" xml:lang="ru">
- <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> и <a class=
- "ulink" href="https://man.archlinux.org/man/ln.1">ln(1)</a>,
- прежде чем сообщать об ошибке.
- </p>
- </div>
- <p>
- Некоторые программы, использующие Glibc, применяют несовместимый с
- FHS каталог <code class="filename">/var/db</code> для хранения
- своих данных времени выполнения. Установите следующий патч, чтобы
- такие программы хранили свои данные в местах, совместимых с FHS:
- </p>
- <pre class="userinput"><kbd class=
- "command">patch -Np1 -i ../glibc-2.39-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.19 \
- --with-headers=$LFS/usr/include \
- --disable-nscd \
- 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.19</code></em></span>
- </dt>
- <dd>
- <p>
- Этот параметр позволяет Glibc выполнять компиляцию библиотеки
- с поддержкой ядра 4.19 и более поздних версий. Поддержка
- более старых ядер не включена.
- </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>
- <dt>
- <span class="term"><em class=
- "parameter"><code>--disable-nscd</code></em></span>
- </dt>
- <dd>
- <p>
- Параметр отключает сборку демона кэша службы имен, который
- больше не используется.
- </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>
- Поступали сообщения о том, что этот пакет может не
- компилироваться при <span class="quote">«<span class=
- "quote">параллельной сборке</span>»</span>. Если это произойдет,
- повторно запустите команду make с параметром <code class=
- "option">-j1</code>.
- </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="ru" xml:lang="ru">
- <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.7.4 API">Пред.</a>
- <p>
- Заголовочные файлы Linux-6.7.4 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.1">Начало</a>
- </li>
- </ul>
- </div>
- </body>
-</html>