5.8. Glibc-2.3.4-20040701

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”.