From 5a6834585c43296c2207f5f251d3d5c237c7c8d2 Mon Sep 17 00:00:00 2001 From: Sn4il Date: Wed, 6 Mar 2024 10:25:41 +0300 Subject: Update LFS mirror --- lfs-12.1-sysv/chapter05/glibc.html | 374 +++++++++++++++++++++++++++++++++++++ 1 file changed, 374 insertions(+) create mode 100644 lfs-12.1-sysv/chapter05/glibc.html (limited to 'lfs-12.1-sysv/chapter05/glibc.html') diff --git a/lfs-12.1-sysv/chapter05/glibc.html b/lfs-12.1-sysv/chapter05/glibc.html new file mode 100644 index 0000000..4c5d12f --- /dev/null +++ b/lfs-12.1-sysv/chapter05/glibc.html @@ -0,0 +1,374 @@ + + + + + + 5.5. Glibc-2.39 + + + + + + + + +

+ 5.5. Glibc-2.39 +

+
+
+

+ Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска в + каталогах, открытия и закрытия файлов, чтения и записи файлов, + обработки строк, сопоставления с образцом, арифметики и так далее +

+
+
+
+ Приблизительное время сборки: + 1.5 SBU +
+
+ Требуемое дисковое + пространство: 846 MB +
+
+
+
+
+

+ 5.5.1. Установка пакета Glibc +

+

+ Во-первых, создайте символическую ссылку для соответствия + требованиям LSB. Кроме того, для совместимости с x86_64 создайте + символическую ссылку, необходимую для правильной работы загрузчика + динамической библиотеки: +

+
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
+
+ [Примечание] +

+ Примечание +

+

+ Приведенная выше команда верна. Команда ln имеет несколько вариантов + синтаксиса, поэтому обязательно ознакомьтесь с info coreutils ln и ln(1), + прежде чем сообщать об ошибке. +

+
+

+ Некоторые программы, использующие Glibc, применяют несовместимый с + FHS каталог /var/db для хранения + своих данных времени выполнения. Установите следующий патч, чтобы + такие программы хранили свои данные в местах, совместимых с FHS: +

+
patch -Np1 -i ../glibc-2.39-fhs-1.patch
+

+ В документации к Glibc рекомендуется собирать Glibc в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Убедитесь, что утилиты ldconfig and sln установлены в /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Затем подготовьте Glibc к компиляции: +

+
../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
+
+

+ Значение параметров настройки: +

+
+
+ --host=$LFS_TGT, + --build=$(../scripts/config.guess) +
+
+

+ Комбинация этих опций указывает на то, что система сборки + Glibc настраивается на кросс-компиляцию с использованием + кросс-компоновщика и кросс-компилятора в $LFS/tools. +

+
+
+ --enable-kernel=4.19 +
+
+

+ Этот параметр позволяет Glibc выполнять компиляцию библиотеки + с поддержкой ядра 4.19 и более поздних версий. Поддержка + более старых ядер не включена. +

+
+
+ --with-headers=$LFS/usr/include +
+
+

+ Этот аргумент позволяет скомпилировать библиотеку с + заголовочными файлами, недавно установленными в каталоге + $LFS/usr/include, таким образом, пакету будет известно, какие + функции есть у ядра, чтобы оптимизировать себя. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ Этот аргумент гарантирует, что библиотека будет установлена в + /usr/lib вместо стандартного /lib64 на 64-битных машинах. +

+
+
+ --disable-nscd +
+
+

+ Параметр отключает сборку демона кэша службы имен, который + больше не используется. +

+
+
+
+

+ На этом этапе может появиться следующее предупреждение: +

+
+
+
configure: WARNING:
+*** These auxiliary programs are missing or
+*** incompatible versions: msgfmt
+*** some features will be disabled.
+*** Check the INSTALL file for required versions.
+
+
+

+ Отсутствующая или несовместимая программа msgfmt, как правило, безвредна. + msgfmt является + частью пакета Gettext, который должен предоставлять + хост-дистрибутив. +

+
+ [Примечание] +

+ Примечание +

+

+ Поступали сообщения о том, что этот пакет может не + компилироваться при «параллельной сборке». Если это произойдет, + повторно запустите команду make с параметром -j1. +

+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Если переменная LFS настроена + неправильно, и, несмотря на рекомендации, вы выполняете сборку от + имени пользователя root, + следующая команда установит только что собранный Glibc в вашу + хост-систему, что, скорее всего, сделает её непригодной для + использования. Поэтому дважды проверьте, правильность настройки + среды и что вы вошли в систему не под учетной записью + root, прежде чем запускать + следующую команду. +

+
+
make DESTDIR=$LFS install
+
+

+ Значение опции make + install: +

+
+
+ DESTDIR=$LFS +
+
+

+ Переменная make DESTDIR + используется почти всеми пакетами для определения места + установки пакета. Если она не задана, по умолчанию для + установки используется корневой каталог (/). Здесь мы указываем, что пакет должен + быть установлен в $LFS, который станет корневым каталогом в + Раздел 7.4, «Вход в + окружение Chroot». +

+
+
+
+

+ Исправьте жестко запрограммированный путь к исполняемому загрузчику + в ldd: +

+
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
+
+ [Внимание] +

+ Внимание +

+

+ На этом этапе необходимо остановиться и убедиться, что основные + функции (компиляция и компоновка) нового кросс-тулчейна работают + должным образом. Чтобы выполнить проверку работоспособности, + выполните следующие команды: +

+
echo 'int main(){}' | $LFS_TGT-gcc -xc -
+readelf -l a.out | grep ld-linux
+

+ Если все работает правильно, ошибок быть не должно и вывод + последней команды будет иметь вид: +

+
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+

+ Обратите внимание, что для 32-разрядных машин имя интерпретатора + будет /lib/ld-linux.so.2. +

+

+ Если выходные данные отображаются не так, как указано выше, или + их вообще нет, значит, что-то сделано неправильно. Разберитесь с + проблемой и повторите шаги выше, чтобы исправить ее. Эта проблема + должна быть решена, прежде чем вы продолжите. +

+

+ Как только все будет хорошо, удалите тестовый файл: +

+
rm -v a.out
+
+
+ [Примечание] +

+ Примечание +

+

+ Сборка пакетов в следующей главе послужит дополнительной + проверкой правильности сборки временного кросс-тулчейна. Если + какой-либо пакет, особенно Binutils или GCC, не удается собрать, + это указывает на то, что что-то пошло не так с установленными + ранее Binutils, GCC, или Glibc. +

+
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.5.3, «Содержимое + пакета Glibc.» +

+
+
+ + + -- cgit v1.2.3