- Установка Glibc-2.2.5
- Инсталляция Glibc
- Пояснения команд
- Содержимое Glibc
- Программы
- Описания
- catchsegv
- gencat
- getconf
- getent
- glibcbug
- iconv
- iconvconfig
- ldconfig
- lddlibc4
- locale
- localedef
- mtrace
- nscd_nischeck
- pcprofiledump
- pt_chown
- rpcgen
- rpcinfo
- sprof
- tzselect
- xtrace
- zdump
- Библиотеки
- Описания
- libBrokenLocale, libBrokenLocale_p
- libSegFault
- libanl, libanl_p
- libbsd-compat
- libc, libc_nonshared, libc_p
- libcrypt, libcrypt_p
- libdl, libdl_p
- libieee
- libm, libm_p
- libmcheck
- libmemusage
- libnsl, libnsl_p
- libnss_compat, libnss_dns, libnss_files, libnss_hesiod, libnss_nis, libnss_nisplus
- libpcprofile
- libpthread, libpthread_p
- libresolv, libresolv_p
- librpcsvc, librpcsvc_p
- librt, librt_p
- libthread_db
- libutil, libutil_p
- Зависимости Glibc
- Linux.yaroslavl.ru
- Установка Glibc-2.3.2
- Описание Glibc
- Зависимости установки Glibc
- Установка Glibc
Установка Glibc-2.2.5
Инсталляция Glibc
Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.
Перед выполнением инсталляционных инструкций войдите в каталог glibc-2.2.5 и распакуйте архив glibc-linuxthreads в каталоге glibc-2.2.5, а не в /usr/src.
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для Glibc, вы действуете на свой страх и риск.
Также не стоит запускать скрипт configure с опцией —enable-kernel. Это может вызвать ошибки сегментации при ссылке на него пакетов вроде fileutils, make и tar.
Вообщем, чтобы не рисковать, рекомендуем компилировать Glibc в точности как указано в этом разделе.
Для инсталляции Glibc выполните:
Вместо выполнения make localedata/install-locales можно установить только те локали, которые вам необходимы с помощью команды localedef. Более подробную информацию можно найти в файле INSTALL в директории glibc-2.2.5. Не забудьте создать директорию /usr/lib/local, т.к. localedef предполагает ее наличие.
На данном этапе мы не будем инсталлировать страницы руководства потоков (The Linux Threads man pages), т.к. они требуют функционирующего пакета Perl. Мы вернемся к их инсталляции после установки Perl.
Во время стадии configure на экран будет выведено следующее предупреждение:
Отсутствие файла msgfmt (из пакета gettext, который мы установим позже в данной главе) не вызовет никаких проблем. Файл msgfmt используется для генерирования бинарных файлов перевода, которые позволяют системе общаться на другом языке. Так как эти файлы перевода уже сгенерированы, в использовании msgfmt нет необходимости. Нам понадобился бы msgfmt лишь в том случае, если мы изменили исходники файлов перевода (файлы *.po в подкаталоге po), т.к. нам пришлось бы заново генерировать бинарные файлы.
Пояснения команд
patch -Np1 -i ../glibc-2.2.5-2.patch: Этот патч переводит все упоминания о $(PERL) на /usr/bin/perl в файле malloc/Makefile. Это необходимо, т.к. Glibc не может определить местонахождение программ Perl, так как пакет Perl еще не был установлен. Данный патч также заменяет все упоминания о root на 0 в файле login/Makefile. Это необходимо, потому что сам пакет Glibc еще не установлен, и выявление идентификационного номера пользователя из имени пользователя невозможно. К примеру, команда chown root file не будет работать, в то время как при замене имени пользователя на userid, программа будет выполнена.
Данный патч также устраняет некоторые другие ошибки, например, «errlist», «dns resolver», «xdr_array», «calloc», «thread exit», «udivdi3», «math test», «restrict_arr» и «divbyzero». Для получения более подробной информации, см. http://www.zipworld.com.au/
touch /etc/ld.so.conf: Один из заключительных шагов установки Glibc installation — выполнение команды ldconfig для обновления динамического кэша загрузки. Если этот файл не существует, инсталляция завершится с ошибкой, что не может прочесть файл. Для избежания подобной ошибки, мы просто создаем пустой файл (в случае пустого файла, Glibc будет по умолчанию использовать каталоги /lib и /usr/lib).
—disable-profile: Отменяет компиляцию библиотек с профильной информацией. Если вы собираетесь использовать профили, пропустите эту опцию.
—enable-add-ons: Включает дополнительные модули, в нашем случае linuxthreads.
—libexecdir=/usr/bin: Инсталлирует программу pt_chown в каталог /usr/bin.
echo «cross-compiling = no» > configparms: Этой командой мы даем понять, что компилируем пакет только для нашей системы. Кросс-компиляция используется, например, для того, чтобы скомпилировать пакет для системы Apple Power PC на Intel-совместимом компьютере. Glibc по умолчанию полагает, что мы кросс-компилируем, потому что не может скомпилировать тестовую программу для проверки, т.к. сам пакет Glibc еще не установлен.
exec /static/bin/bash —login: Данная программа запустит новый сеанс оболочки bash вместо текущего. Мы, таким образом, избавимся от приглашения «I have no name!» командной строки, которое было вызвано невозможностью bash получить имя пользователя из userid (из-за отстутствия Glibc).
Содержимое Glibc
Последняя проверка: версия 2.2.5.
Программы
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
Описания
catchsegv
catchsegv может быть использования для слежения за состоянием стека, когда выполнение программы прерывается из-за ошибки распределения памяти.
gencat
gencat генерирует каталоги сообщений.
getconf
getconf отображает значения переменных, зависящих от системной конфигурации.
getent
getent позволяет получить записи административной базы данных.
glibcbug
glibcbug создает сообщение об ошибке в glibc и отправляет по указанному адресу сообщения об ошибках.
iconv
iconv осуществляет преобразование наборов символов.
iconvconfig
iconvconfig создает конфигурационные файлы для модулей iconv.
ldconfig
ldconfig настраивает привязки времени исполнения динамического линкера.
ldd выводит список разделяемых библиотек, необходимых заданным программам.
lddlibc4
lddlibc4 используется ldd при работе с объектными файлами.
locale
locale — скрипт на Perl, разрешающий (или запрещающий) компилятору использование локалей POSIX для встроенных операций.
localedef
localedef компилирует спецификации локалей.
mtrace
mtrace выводит путь multicast от источника к получателю (запрос IP trace).
nscd — демон, предоставляющий кэш для большинства запросов DNS.
nscd_nischeck
nscd_nischeck проверяет нужен или нет защищенный режим для запроса NIS+.
pcprofiledump
pcprofiledump выводит информацию, полученной из профиля PC.
pt_chown
pt_chown устанавливает влдельца, группу и права доступа подчиненного псеводотерминала в соответствии с основным псевдотерминалом, переданном в описании `3′. Это вспомогательная программа для функции `grantpt’. Не предназначается для прямого запуска из командной строки.
rpcgen
rpcgen генерирует код C для реализации протокола RPC.
rpcinfo
rpcinfo делает запрос RPC к серверу.
sln символически связывает dest и source. Программа собрана статически. Использование sln полезно для создания символических ссылок на динамические библиотеки, если система динамического связывания по какой-то причине нефункциональна.
sprof
sprof выводит информацию о разделяемом объекте.
tzselect
tzselect получает от пользователя информацию от его местоположении и выводит на стандартный вывод значение текущей временной зоны.
xtrace
xtrace отслеживает исполнение программы, выводя исполняемые в данный момент функции.
zdump
zdump — сохраняет значение временной зоны.
zic — компилятор временных зон.
Библиотеки
ld.so, libBrokenLocale.[a,so], libBrokenLocale_p.a, libSegFault.so, libanl.[a,so], libanl_p.a, libbsd-compat.a, libc.[a,so], libc_nonshared.a, libc_p.a, libcrypt.[a,so], libcrypt_p.a, libdl.[a,so], libdl_p.a, libg.a, libieee.a, libm.[a,so], libm_p.a, libmcheck.a, libmemusage.so, libnsl.a, libnsl_p.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libpthread_p.a, libresolv.[a,so], libresolv_p.a, librpcsvc.a, librpcsvc_p.a, librt.[a,so], librt_p.a, libthread_db.so, libutil.[a,so] и libutil_p.a
Описания
ld.so — вспомогательная программа для исполняемых файлов разделяемых библиотек.
libBrokenLocale, libBrokenLocale_p
Используется многими программами, например Mozilla, для использования поврежденных локалей.
libSegFault
libSegFault управляет сигналами ошибок распределения памяти, также пытается их перехватить.
libanl, libanl_p
libanl — библиотека асинхронных запросов DNS.
libbsd-compat
libbsd-compat предоставляет переносимость, необходимую для запуска некоторых программ в Linux.
libc, libc_nonshared, libc_p
Эти файлы образуют основную библиотеку C. Библиотека C — набор набор часто используемых в программах функций. Таким образом, программисту не нужно писать свои функции для каждой задачи. Большинство стандартных операций вроде вывода строки на экран уже готовы к использованию.
Библиотека C (в общем случае, любая библиотека) существует как в динамическом, так и статическом виде. Вкратце, когда программа использует статическую библиотеку, код из библиотеки копируется в исполняемый файл. При использовании динамической библиотеки, код из библиотеки не добавляется в исполняемый файл, а загружается только во время исполнения программы. Это позволяет уменьшить размер программ. За подробностями обращайтесь к документации библиотеки C.
libcrypt, libcrypt_p
libcrypt — криптографическая библиотека.
libdl, libdl_p
libdl — библиотека интерфейсов динамической линковки.
libg — библиотека времени исполнения g++.
libieee
libieee — IEEE библиотека операций с числами с плавающей запятой.
libm, libm_p
libm — математическая библиотека.
libmcheck
libmcheck — содержит код, выполняемый при загрузке.
libmemusage
libmemusage — используется memusage для сбора информации о памяти, используемой программой.
libnsl, libnsl_p
libnsl — библиотека сетевых сервисов.
libnss_compat, libnss_dns, libnss_files, libnss_hesiod, libnss_nis, libnss_nisplus
Основная идея — поместить реализацию различных сервисов доступа к базам данных в отдельные модули. Преимущества:
поставщики могут добавлять новые сервисы, не включая их в C библиотеку GNU,
модули могут быть независимо обновлены,
Библиотека C имеет меньший размер.
libpcprofile
Код, используемый ядром для отслеживания времени, затрачиваемого процессором на исполнение функций, отдельных строк кода и инструкций.
libpthread, libpthread_p
POSIX библиотека потоков.
libresolv, libresolv_p
Библиотека позволяет DNS-серверам создавать, посылать и интерпретировать пакеты.
librpcsvc, librpcsvc_p
Библиотека предоставляет различные сервисы RPC.
librt, librt_p
Библиотека предоставляет большинство интерфейсов, описанных POSIX.1b Realtime Extension.
libthread_db
Библиотека полезна для создания отладчиков для многопотоковых приложений.
libutil, libutil_p
Содержит код «стандартных» функций, используемых многими утилитами Unix.
Зависимости Glibc
Последняя проверка: версия 2.2.5.
Bash: sh
Binutils: ar, as, ld, ranlib, readelf
Diffutils: cmp
Fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch
Gcc: cc, cc1, collect2, cpp, gcc
Grep: egrep, grep
Gzip: gzip
Make: make
Gawk: gawk
Sed: sed
Sh-utils: date, expr, hostname, pwd, uname
Texinfo: install-info, makeinfo
Textutils: cat, cut, sort, tr
Источник
Linux.yaroslavl.ru
Linux From Scratch: Версия 5.0 | ||
---|---|---|
Назад | Глава 5. Построение временной системы | Далее |
Установка Glibc-2.3.2
Описание 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. Исправим это с помощью команд:
Также, Glibc имеет некоторые тонкие проблемы при компиляции с GCC 3.3.1. Применим следующий патч для их исправления:
Документация по Glibc рекомендует собирать Glibc вне директории с исходниками, в отдельной директории для сборки:
Далее, подготовим Glibc к компиляции:
Описание опций конфигурации:
—disable-profile : Это отключает сборку библиотек с использованием профильной информации. Опустите эту опцию, если собираетесь испольховать профили.
—enable-add-ons : Это подключает любые дополнения при остановке Glibc, в нашем случае Linuxthreads.
—with-binutils=/tools/bin and —with-headers=/tools/include : Строго говоря, эти опции необязательны. Но они позволяют нам удостовериться, что будут использованы нужные заголовки ядра и программы Binutils для сборки Glibc.
—without-gd : Этот переключатель позволит нам быть уверенными, что не соберется программа memusagestat , которая будет пытаться подключить библиотеки из основной системы (libgd, libpng, libz и некоторые другие).
На этом шаге вы можете увидеть следующее предупреждение:
Отсутствующая или несовместимая программа msgfmt безвредна, но может привести к определенным проблемам при тестировании.
Тестирование Glibc сильно зависит от некоторых функций вашей основной системы, в частности ядра. Также, некоторые тесты в этой главе могут взаимодействовать с окружением вашей системы. Само собой, мы не должны получить таких проблем при запуске тестирования в Главе 6. В общем, тестирование Glibc должно пройти удачно. Тем не менее. по причинам, перечисленным ниже, тестирование может закончиться неудачно. Вот список наиболее вероятных причин этого:
Тест math иногда не проходит при его запуске на системе с процессорами, отличными от новых Intel-совместимых или оригинальных AMD. Также это может произойти при некоторых установках оптимизации.
Тест gettext иногда не проходит из-за зависимостей от основной системы. Точная причина пока не ясна.
Тест atime иногда не проходит когда раздел LFS монтирован с опцией noatime или из-за других причин, связанных с файловой системой.
Тест shm может не пройти, если в ващей системе запущена файловая система devfs, но нет файловой системы tmpfs, монтированой на /dev/shm, если отключена поддержка tmpfs в ядре.
При запуске на старом и медленном оборудовании некоторые тесты могут не пройти по тайм-ауту.
В общем, вам не стоит беспокоится, естли вы увидите, что тестирование Glibc не прошло. Glibc в Главе 6 будет последним из устанавливаемых и его тестирование будет более важным. Но имейте в виду. что в Главе 6 некоторые тесты могут также не пройти — тест math, к примеру. Когда вы получите сообщение о непрохождении теста, запомните его, а затем продолжите тестирование дальше . Это можно сделать, так как скрипт тестирования запоминает пройденые тесты для возможности его продолжения после выхода из-за ошибки. Вы можете использовать эту возможность «запуска-остановки» автоматически с помощью команды make -k check . Но если вы так сделаете, проверьте логи тестирования и посмотрите общее количество и причины проваленых тестов.
Теперь установим пакет:
Разные страны и культуры имеют различные соглашения для коммуникаций. Эти соглашения состоят как из очень простых, таких как форматы даты и времени, так и из более сложных, таких как разговорный язык. «Интернационализация» программ GNU работает с помощью локалей (locales). Так что установим локали для Glibc:
Альтернативой запуску предыдущей команды является установка только определенных локалей, тех которые вам нужны. Это может быть достигнуто использованием команды localedef . Информацию об использовании этой команды можно получить из файла INSTALL в исходниках glibc-2.3.2. Тем не менее, список локалей может быть существенным для некоторых тестов, в частности, теста libstdc++ из GCC. Следующие команды, используемые вместо вышеописаной install-locales, устаноят минимальный набор локалей для успешного завершения тестирований:
Источник