Install glibc on linux

Установка 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 является весьма самодостаточной и должна установится корректно, если ваши spec файл и компоновщик находятся в /tools. Мы не можем установить spec и компоновщик перед установкой Glibc потому, что тест автоконфинурации Glibc даст фиктивные результаты и от этого зависит чистота сборки.

Замечание: Тестирование Glibc в этой главе является критичным. Ни в коем случае нельзя его пропускать.

Перед началом сборки Glibc не забудьте снова распаковать Glibc-linuxthreads в дмректории glibc-2.3.2 и отключить переменные окружения, отвечающие за флаги оптимизации сборки.

На стадии установки Glibc выдает ошибку при отсутствии файла /etc/ld.so.conf. Исправим это командой:

Применим ранее использовавшийся патч:

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

Теперь подготовим Glibc к компиляции:

Описание параметров конфигурации:

—libexecdir=/usr/bin : Это надо для установки программы pt_chown в директорию /usr/bin.

—with-headers=/usr/include : Это позволит убедиться, что заголовки ядра из /usr/include будут использованы при сборке. Если вы не укажете этот параметр, то будут использованы заголовки из /tools/include что не идеально (несмотря на их идентичность). Использование этого переключателя позволит также убедиться что вы не забыли установить заголовки ядра в /usr/include.

Тестирование, описаное в части Установка Glibc-2.3.2 Главы 5, будет очень уместно здесь. Убедитесь перед продолжением установки, что все в порядке.

И установим пакет:

Локали позволят вашей системе работать на разных языках. Их установка не обеспечивается предыдущей командой, вам надо зделать это с помощью:

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

Наконец, соберем man страницы для linuxthreads:

Конфигурирование Glibc

Нам нужно создать файл /etc/nsswitch.conf потому, что по умолчанию Glibc не создает этот файл, а без него Glibc не работает с сетью. Также это надо для работы с вашей временной зоной.

Читайте также:  Замена системных шрифтов windows

Создадим новый файл /etc/nsswitch.conf запуском следующих команд:

Для определения вашей временной зоны, запустите скрипт:

Когда вы ответите на некоторые вопросы о вашим местонахождении, скрипт выдаст вам вашу временную зону. Что-то наподобие EST5EDT или Canada/Eastern. Создадим файл /etc/localtime запуском:

—remove-destination : Это необходимо для удаления существующей ссылки. Мы используем копию файла вместо ссылки на случай, если /usr находится на другом разделе. Также это нужно, например, когда вы загружаетесь в режиме single user (одного пользователя).

Само собой, вам надо заменить Canada/Eastern на вашу временную зону, которую мы определили с помощью скрипта tzselect .

Источник

Установка 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, программа будет выполнена.

Читайте также:  Windows 10 как поменять профиль сети

Данный патч также устраняет некоторые другие ошибки, например, «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 полезно для создания символических ссылок на динамические библиотеки, если система динамического связывания по какой-то причине нефункциональна.

Читайте также:  Free download windows adobe flash player

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

Источник

Оцените статью