diff options
Diffstat (limited to 'lfs-12.0-sysv/chapter05/glibc.html')
-rw-r--r-- | lfs-12.0-sysv/chapter05/glibc.html | 361 |
1 files changed, 0 insertions, 361 deletions
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" > 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">Раздел 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">Раздел 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> |