5.8. Glibc-2.3.4-20040701

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

Расчетное время сборки 11.8 SBU

Требуемое место на диске 800 MB

Glibc - зависимости установки: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed и Texinfo

5.8.1. Инсталируем Glibc

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

Изменяя флаги оптимизации для glibc, вы действуете на свой страх и риск.

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

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

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

../glibc-2.3.4-20040701/configure --prefix=/tools \ --disable-profile --enable-add-ons=nptl --with-tls \ --with-__thread --enable-kernel=2.6.0 \ --with-binutils=/tools/bin --without-gd --without-cvs \ --with-headers=/tools/glibc-kernheaders

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

--disable-profile

Отключает сборку библиотек с использованием профильной информации. Опустите эту опцию, если собираетесь испольховать профили.

--enable-add-ons=nptl

Говорит Glibc использовать дополнение NPTL к библиотеке.

--with-tls

Говорит Glibc включить поддержку для Thread-Local Storage (TLS). Это необходимо для нормальной работы NPTL.

--with-__thread

Эта опция говорит Glibc включить поддержку нитей. Это необходимо для правильной сборки TLS.

--enable-kernel=2.6.0

Эта опция говорит Glibc компилировать библиотеку с поддержкой 2.6.x Линукс ядер.

--with-binutils=/tools/bin

Эта опция необязательна, но она позволяют нам удостовериться, что будут использована нужная программа Binutils для сборки Glibc.

--without-gd

Эта опция запрещает сборку программы memusagestat, которая пытается связаться с библиотеками основной системы (libgd, libpng, libz, и т.д.).

--without-cvs

Эта опция запрещает использование файлов Makefile из тестовых CVS версий, когда используется CVS. Пока эта команда не обязательна, она рекомендуется.

--with-headers=/tools/glibc-kernheaders

Эта опция говорит Glibc компилироваться с использованием “сырых” заголовков ядра, так что точно известно, какие функции имеет ядро и, таким образом, может себя оптимизировать.

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

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, который используется из дистрибутива основной системы. Если msgfmt имеется, но считается несовместимой, обновите пакет Gettext из основной системы или продолжайте без него.

Компилируем пакет

make

Компиляция проведена. Как было сказано ранее, запуск теста для временной сборки в этой части проводить не обязательно. В любом случае, для запуска теста Glibc используйте следующую команду:

make check

Для обсуждения особо выжных ошибок тестирования, смотрите Раздел 6.11, “Glibc-2.3.4-20040701.”

В этой части некоторые тесты могут быть неспособны дать положительный результат при использовании имеющихся приложений или переменных окружения базовой системы. Ошибки тестов Glibc в этой части, обычно, не должны беспокоить. Glibc, проинсталированные в Главе 6, будут полностью готовы к использованию. Но имейте в виду, что при прохождении тестов (даже в Главе 6), некоторые ошибки все еще могут появляться, например в тесте math.

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

Этап инсталляции Glibc будет иметь предупреждение в конце об отсутствии /tools/etc/ld.so.conf. Упредим это сообщение:

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

Устанавливаем пакет

make install

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

[Note]

Замечание

Если тест не был запущен в этой части (как в рекомендации), нет необходимости в инсталяции локалей сейчас. Необходимые локали будут установлены в следующей части.

Для установки Glibc локалей в любом случае,используйте следующую команду:

make localedata/install-locales

Альтернативой запуску предыдущей команды для экономии времени является установка только определенных локалей, тех которые вам нужны. Это может быть достигнуто использованием команды localedef command. Информацию об использовании этой команды можно получить из файла INSTALL в исходниках Glibc. Тем не менее, список локалей может быть существенным для некоторых тестов, в частности, теста 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 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 it_IT -f ISO-8859-1 it_IT localedef -i ja_JP -f EUC-JP ja_JP

Детальная информация о пакете находится в Разделе 6.11.4, “Описание Glibc”.