<Предыдущая | Содержание: | Следующая>
6.9.1. Установка Glibc
Внимание
Система сборки Glibc является самодостаточной и установится идеально, даже если файл спецификаций компилятора и компоновщик все еще указывают на /инструменты. Спецификации и компоновщик не могут быть изменены до установки Glibc, потому что тесты автоконфигурации Glibc дадут ложные результаты и нарушат цель достижения чистой сборки.
Внимание
Система сборки Glibc является самодостаточной и установится идеально, даже если файл спецификаций компилятора и компоновщик все еще указывают на /инструменты. Спецификации и компоновщик не могут быть изменены до установки Glibc, потому что тесты автоконфигурации Glibc дадут ложные результаты и нарушат цель достижения чистой сборки.
Некоторые программы Glibc используют компилятор, отличный от FHS. / var / db каталог для хранения их данных времени выполнения. Примените следующий патч, чтобы такие программы сохраняли свои данные времени выполнения в FHS-совместимых местах:
патч -Np1 -i ../glibc-2.30-fhs-1.patch
патч -Np1 -i ../glibc-2.30-fhs-1.patch
Исправьте проблему, возникшую в ядре linux-5.2:
sed -i '/asm.socket.h/a# включить '\ sysdeps / unix / sysv / linux / бит / сокет.h
sed -i '/asm.socket.h/a# включить '\ sysdeps / unix / sysv / linux / бит / сокет.h
-сфв
-сфв
-сфв
-сфв
../lib/ld-linux-x86-64.so.2 / lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
../lib/ld-linux-x86-64.so.2 / lib64
../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
Создайте символическую ссылку для соответствия LSB. Кроме того, для x86_64 создайте символическую ссылку совместимости, необходимую для правильной работы динамического загрузчика:
case $ (uname -m) в
case $ (uname -m) в
i? 86) ln
;;
x86_64) лин
ln
;;
ESAC
-сфв
ld-linux.so.2 /lib/ld-lsb.so.3
i? 86) ln
;;
x86_64) лин
ln
;;
ESAC
Документация Glibc рекомендует собирать Glibc в специальном каталоге сборки:
mkdir -v сборка cd сборка
mkdir -v сборка cd сборка
Подготовьте Glibc к компиляции:
CC = "gcc -ffile-prefix-map = / tools = / usr" \
../configure --prefix = / usr
--disable-ошибка
--enable-kernel = 3.2
--enable-stack-protector = сильный
--with-headers = / usr / include libc_cv_slibdir = / lib
\
\
\
\
\
CC = "gcc -ffile-prefix-map = / tools = / usr" \
../configure --prefix = / usr
--disable-ошибка
--enable-kernel = 3.2
--enable-stack-protector = сильный
--with-headers = / usr / include libc_cv_slibdir = / lib
Значение опций и новых параметров настройки:
CC = "gcc -ffile-prefix-map = / tools = / usr"
Заставьте GCC записывать любые ссылки на файлы в / tools в результате компиляции, как если бы файлы находились в / usr. Это позволяет избежать введения неверных путей в отладочные символы.
--disable-ошибка
Этот параметр отключает параметр -Werror, передаваемый GCC. Это необходимо для запуска набора тестов.
--enable-stack-protector = сильный
Этот параметр повышает безопасность системы за счет добавления дополнительного кода для проверки переполнения буфера, например атак с разбиением стека.
--with-headers = / usr / include
Эта опция сообщает системе сборки, где найти заголовки API ядра. По умолчанию эти заголовки ищутся в
/ tools / include.
libc_cv_slibdir = / библиотека
Эта переменная устанавливает правильную библиотеку для всех систем. Мы не хотим, чтобы использовалась lib64.
Скомпилируйте пакет:
сделать
сделать
Важнo
В этом разделе набор тестов для Glibc считается критически важным. Не пропускайте его ни при каких обстоятельствах.
Важнo
В этом разделе набор тестов для Glibc считается критически важным. Не пропускайте его ни при каких обстоятельствах.
/ lib ;;
/ lib ;;
-sfnv $ PWD / elf / ld-linux-x86-64.so.2 / lib ;;
-sfnv $ PWD / elf / ld-linux-x86-64.so.2 / lib ;;
Как правило, некоторые тесты не проходят. Перечисленные ниже сбои тестов обычно можно игнорировать.
case $ (uname i? 86) ln x86_64) ln
ESAC
-m) в
-sfnv $ PWD / elf / ld-linux.so.2
case $ (uname i? 86) ln x86_64) ln
ESAC
Внимание
Приведенная выше символическая ссылка необходима для запуска тестов на этом этапе сборки в среде chroot. Он будет перезаписан на этапе установки ниже.
Внимание
Приведенная выше символическая ссылка необходима для запуска тестов на этом этапе сборки в среде chroot. Он будет перезаписан на этапе установки ниже.
делать чек
делать чек
Вы можете увидеть некоторые ошибки теста. Набор тестов Glibc в некоторой степени зависит от хост-системы. Это список наиболее распространенных проблем, наблюдаемых в некоторых версиях LFS:
• разное / tst-ttyname известен сбой в среде chroot LFS.
• inet / tst-idna_name_classify известен сбой в среде chroot LFS.
• posix / tst-getaddrinfo4 и posix / tst-getaddrinfo5 может выйти из строя на некоторых архитектурах.
• nss / tst-nss-files-hosts-multi Тест может не пройти по неустановленным причинам.
• rt / tst-cputimer {1,2,3} тесты зависят от ядра хост-системы. Известно, что ядра 4.14.91–4.14.96, 4.19.13–4.19.18 и 4.20.0–4.20.5 приводят к сбою этих тестов.
• Математические тесты иногда терпят неудачу при запуске в системах, в которых процессор не является относительно новым процессором Intel или AMD.
Хотя это безобидное сообщение, на этапе установки Glibc будет жаловаться на отсутствие /etc/ld.so.conf. Предотвратить это предупреждение с помощью:
коснитесь /etc/ld.so.conf
коснитесь /etc/ld.so.conf
Исправьте сгенерированный Makefile, чтобы пропустить ненужную проверку работоспособности, которая не выполняется в частичной среде LFS:
sed '/ test-installation / s @ $ (PERL) @echo not running @' -i ../Makefile
sed '/ test-installation / s @ $ (PERL) @echo not running @' -i ../Makefile
Установите пакет:
сделать установку
сделать установку
Установите файл конфигурации и каталог времени выполнения для NSCD:
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv / var / cache / nscd
cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv / var / cache / nscd
Затем установите локали, которые могут заставить систему реагировать на другом языке. Ни одна из локалей не требуется, но если некоторые из них отсутствуют, тестовые наборы будущих пакетов будут пропускать важные тестовые наборы.
Индивидуальные языковые стандарты могут быть установлены с помощью локальдеф программа. Например, первая локальдеф команда ниже объединяет / usr / share / i18n / locales / cs_CZ независимое от кодировки определение локали с / usr / share / i18n / charmaps / UTF-8.gz определение charmap и добавляет результат в / usr / lib / locale / locale- архив файл. Следующие инструкции установят минимальный набор локалей, необходимый для оптимального покрытия тестов:
mkdir -pv / usr / lib / locale
localedef -i POSIX -f UTF-8 C.UTF-8 2> / dev / null || истинный localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE @ euro -f ISO-8859-15 de_DE @ euro localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i el_GR -f ISO-8859-7 el_GR localedef -i en_GB -f UTF-8 en_GB.UTF-8 localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef - i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR @ euro -f ISO-8859-15 fr_FR @ euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> / dev / null || истинный localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN .GB18030
localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
Кроме того, установите локаль для вашей страны, языка и набора символов.
Или установите все языковые стандарты, перечисленные в glibc-2.30 / localedata / ПОДДЕРЖИВАЕТСЯ файл (он включает все перечисленные выше языковые стандарты и многие другие) сразу с помощью следующей трудоемкой команды:
сделать localedata / install-locales
сделать localedata / install-locales
Затем используйте локальдеф команда для создания и установки локалей, не перечисленных в glibc-2.30 / localedata / ПОДДЕРЖИВАЕТСЯ файл в том маловероятном случае, когда они вам понадобятся.
Внимание
Glibc теперь использует libidn2 при разрешении интернационализированных доменных имен. Это зависимость времени выполнения. Если эта возможность необходима, инструкции по установке libidn2 находятся на странице BLFS libidn2.
Внимание
Glibc теперь использует libidn2 при разрешении интернационализированных доменных имен. Это зависимость времени выполнения. Если эта возможность необходима, инструкции по установке libidn2 находятся на странице BLFS libidn2.