Замечание
Для некоторых пакетов, не входящих в состав LFS, предлагается устанавливать библиотеку GNU libiconv с тем, чтобы можно преобразовывать данные из одной кодировки в другую. На главной странице проекта (http://www.gnu.org/software/libiconv/) указывается: "Данная библиотека предоставляет собой реализацию iconv(), предназначенную для использования в системах, в которых такой библиотеки нет, либо в которых такая библиотека не может осуществлять преобразование в кодировку и из кодировки Unicode". В Glibc предлагается реализация iconv()и можно преобразовывать данные вв кодировку и из кодировки Unicode, поэтому в системе LFS библиотека libiconv не требуется.
Система сборки пакета Glibc является самодостаточной и пакет будет прекрасно установлен даже в случае, если файл спецификаций компилятора и компоновщик по-прежнему указывают на директорий /tools. Спецификации и компоновщик не следует менять до установки пакета Glibc, поскольку не пройдут тесты Glibc autoconf и в результате не удастся получить чистую сборку пакета.
Когда запускается команда make install, скрипт, который называется test-installation.pl, выполнит небольшой тест проверки чистоты установки для нашей только что установленной библиотеки Glibc. Однако, поскольку наш набор инструментальных средств по-прежнему указывает на директорий test-installation.pl, этот тест будет выполняться над не той библиотекой Glibc. Мы можем заставить скрипт проверять библиотеку Glibc, которую мы только что установили, следующим образом:
Кроме того, в скрипте test-installation.pl есть ошибка, в результате которой делается попытка скомпоновать тестовую программу с библиотекой, которая не установлена с помощью команды make install. Выполните следующую команду sed для того, чтобы это исправить:
sed -i -e 's/"db1"/& \&\& $name ne "nss_test1"/' scripts/test-installation.pl
В скрипте ldd, исполняемом в командной оболочке, используется синтаксис, специфичный для Bash. В случае, если установлен другой интерпретатор, например, /bin/sh, измените программу интерпретатора, используемого по умолчанию, на /bin/bash так, как это писано в главе Shells (Командные оболочки) в книге BLFS:
sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
Исправьте ошибку, которая не позволяется делать сборку пакета Glibc с помощью компилятора GCC-4.5.2:
patch -Np1 -i ../glibc-2.13-gcc_fix-1.patch
Исправьте ошибку разбалансировки стека, которая возникает при некоторых обстоятельствах:
sed -i '195,213 s/PRIVATE_FUTEX/FUTEX_CLOCK_REALTIME/' \nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timed{rd,wr}lock.S
Документация по Glibc рекомендует собирать пакет Glibc в отдельном директории, предназначенном для сборки, а не в директории с исходными кодами:
mkdir -v ../glibc-buildcd ../glibc-build
Как и в главе 5, для машин с архитектурой x86 добавьте в переменную CFLAGS флаги, необходимые для компилятора. Здесь также для компилятора gcc указываются режимы оптимизации библиотеки, повышающие скорость компиляции (-pipe) и увеличивающие производительность пакета (-O3).
case `uname -m` in i?86) echo "CFLAGS += -march=i486 -mtune=native -O3 -pipe" > configparms ;;esac
Этот параметр изменяет месторасположение команды pt_chown с используемого по умолчанию директория /usr/libexec на директорий /usr/lib/glibc.
Откомпилируйте пакет:
make
Важно
В этом разделе выполнение набора тестов для Glibc считается важным. Не пропускайте его ни при каких обстоятельствах.
Перед запуском тестов, скопируйте файл из дерева исходных кодов в дерево нашей сборки с тем, чтобы предотвратить ряд неудачных запусков тестов, затем проверьте результаты:
Вы, вероятно, увидите ожидаемый (игнорируемый) отказ теста posix/annexc. Кроме того, тестовый набор для Glibc в некоторой степени зависит от хост системы. Ниже приведен список наиболее часто встречающихся вопросов:
Иногда тесты nptl/tst-clock2, nptl/tst-attr3 и rt/tst-cpuclock2 не проходят. Причина не совсем понятна, но есть признаки того, что проблемы с тестами могут быть вызваны малым временем исполнения.
Математические тесты иногда также не проходят, когда они выполняются в системах, где процессор не является сравнительно новым фирменным Intel или соответствующим подлинным процессором AMD.
Если вы смонтировали раздел LFS с параметром noatime, тест atime проходить не будет. Как уже упоминалось в разделе 2.4 "Монтирование нового раздела", не используйте параметр noatime, когда собираете систему LFS.
Будучи запущенными на старом или и медленном оборудовании или в системе, которая находится под нагрузкой, некоторые тесты могут не проходить из-за того, что превышены таймауты. Измените команду make check и установите такое значение для TIMEOUTFACTOR, которое поможет устранить эти ошибки (например, TIMEOUTFACTOR=16 make -k check).
На стадии установки пакет Glibc будет жаловаться на отсутствие файла /etc/ld.so.conf. Это сообщение безвредное; предотвратить его появление можно следующим образом:
touch /etc/ld.so.conf
Установите пакет:
make install
Указанная выше команда не устанавливает локали, из-за которых ответы системы могут выдаваться на другом языке. Ни одна из локалей не требуется, но если некоторые из них отсутствует, в наборах тестов пакетов, которые будут устанавливаться в будущем, некоторые тестовые случаи могут быть пропущены.
Отдельные локали можно установить с помощью программы localedef. Например, первая команда localedef, приведенная ниже, объединяет определение локали для независимого набора данных/usr/share/i18n/locales/cs_CZ с определением таблицы отображения символов /usr/share/i18n/charmaps/UTF-8.gz и добавляет результат в файл /usr/lib/locale/locale-archive. Следующие инструкции установят минимальный набор локалей, необходимых для выполнения оптимального набора тестов:
Дополнительно задайте локаль для своей страны, языка и набора символов.
Либо сразу установите все локали, перечисленные в файле glibc-2.13/localedata/SUPPORTED (в нем находятся все локали, перечисленные выше, и многие другие), с помощью одной следующей локали:
make localedata/install-locales
Затем с помощью команды localedef создайте и установите локали, которые не указаны в файле glibc-2.13/localedata/SUPPORTED, в том маловероятном случае, когда таковые вам потребуются.