Установка Glibc-2.3.2

Ожидаемое время сборки: 11.8 SBU
Ожидаемое место на диске: 800 MB

Описание Glibc

Glibc является библиотекой C, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т.д. Библиотека C используется для всех динамически скомпонованых программ.

Устанавливаемые программы: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic

Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so]

Зависимости установки Glibc

Glibc зависит от: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Установка Glibc

Перед началом установки Glibc, вы должны перейти (с помощию команды cd, например) в директорию glibc-2.3.2 и распаковать Glibc-linuxthreads в этой директории, а не там где вы обычно распаковываете все исходники.

Замечание: Мы собираемся запустить тестирование для Glibc в этой главе. Это тестирование тут является менее важным, чем тестирование Glibc в Главе 6.

Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для glibc, вы действуете на свой страх и риск.

Хотя это и безвредное сообщение, но при установке Glibc жалуется на отсутствие /tools/etc/ld.so.conf. Исправим это с помощью команд:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Также, Glibc имеет некоторые тонкие проблемы при компиляции с GCC 3.3.1. Применим следующий патч для их исправления:

patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch

Документация по Glibc рекомендует собирать Glibc вне директории с исходниками, в отдельной директории для сборки:

mkdir ../glibc-build
cd ../glibc-build

Далее, подготовим Glibc к компиляции:

../glibc-2.3.2/configure --prefix=/tools \
--disable-profile --enable-add-ons \
--with-headers=/tools/include \
--with-binutils=/tools/bin \
--without-gd

Описание опций конфигурации:

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

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

Отсутствующая или несовместимая программа msgfmt безвредна, но может привести к определенным проблемам при тестировании.

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

make

Запустим тестирование:

make check

Тестирование Glibc сильно зависит от некоторых функций вашей основной системы, в частности ядра. Также, некоторые тесты в этой главе могут взаимодействовать с окружением вашей системы. Само собой, мы не должны получить таких проблем при запуске тестирования в Главе 6. В общем, тестирование Glibc должно пройти удачно. Тем не менее. по причинам, перечисленным ниже, тестирование может закончиться неудачно. Вот список наиболее вероятных причин этого:

В общем, вам не стоит беспокоится, естли вы увидите, что тестирование Glibc не прошло. Glibc в Главе 6 будет последним из устанавливаемых и его тестирование будет более важным. Но имейте в виду. что в Главе 6 некоторые тесты могут также не пройти -- тест math, к примеру. Когда вы получите сообщение о непрохождении теста, запомните его, а затем продолжите тестирование дальше . Это можно сделать, так как скрипт тестирования запоминает пройденые тесты для возможности его продолжения после выхода из-за ошибки. Вы можете использовать эту возможность "запуска-остановки" автоматически с помощью команды make -k check. Но если вы так сделаете, проверьте логи тестирования и посмотрите общее количество и причины проваленых тестов.

Теперь установим пакет:

make install

Разные страны и культуры имеют различные соглашения для коммуникаций. Эти соглашения состоят как из очень простых, таких как форматы даты и времени, так и из более сложных, таких как разговорный язык. "Интернационализация" программ GNU работает с помощью локалей (locales). Так что установим локали для Glibc:

make localedata/install-locales

Альтернативой запуску предыдущей команды является установка только определенных локалей, тех которые вам нужны. Это может быть достигнуто использованием команды localedef. Информацию об использовании этой команды можно получить из файла INSTALL в исходниках glibc-2.3.2. Тем не менее, список локалей может быть существенным для некоторых тестов, в частности, теста libstdc++ из GCC. Следующие команды, используемые вместо вышеописаной install-locales, устаноят минимальный набор локалей для успешного завершения тестирований:

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
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 es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP