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
Отключает сборку библиотек с использованием профильной информации. Опустите эту опцию, если собираетесь испольховать профили.
Говорит Glibc использовать дополнение NPTL к библиотеке.
Говорит Glibc включить поддержку для Thread-Local Storage (TLS). Это необходимо для нормальной работы NPTL.
Эта опция говорит Glibc включить поддержку нитей. Это необходимо для правильной сборки TLS.
Эта опция говорит Glibc компилировать библиотеку с поддержкой 2.6.x Линукс ядер.
Эта опция необязательна, но она позволяют нам удостовериться, что будут использована нужная программа Binutils для сборки Glibc.
Эта опция запрещает сборку программы memusagestat , которая пытается связаться с библиотеками основной системы (libgd, libpng, libz, и т.д.).
Эта опция запрещает использование файлов 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]](https://www.opennet.ru/docs/RUS/lfs6/images/note.png)
Замечание
Если тест не был запущен в этой части (как в рекомендации), нет необходимости в инсталяции локалей сейчас. Необходимые локали будут установлены в следующей части.
Для установки 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”.
- Назад Linux-2.6.8.1 Headers
- Далее «Интеграция» средств
- Наверх.
- В начало.
Glibc
Для получения инструкций по установке смотрите Раздел Установка Glibc-2.3.2 в Главе 6.
Официальный адрес пакета
Содержимое 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]
Краткие описания
catchsegv может использоваться для слежения за состоянием стека, когда программа завершается из-за ошибки распределения памяти (segmentation fault).
gencat генерирует каталоги сообщений.
getconf выводит параметры системной конфигурации для переменных, зависящих от файловой системы.
getent получает записи из административных баз данных.
glibcbug cсоздает отчет об ошибке и отсылает его по указанномы адресу.
iconv обеспечивает преобразование кодировки.
iconvconfig создает файл конфигурации для модуля iconv.
ldconfig настраивает временные привязки динамического компоновщика.
ldd возвращает список разделяемых библиотек, требующихся для указанной программы или библиотеки.
lddlibc4 используется ldd для объектных файлов.
locale — программа на Perl, которая указывает компилятору использовать или нет локали POSIX для встроеных операций.
localedef компилирует спецификации локали.
nscd — имя демона сервиса кеширования, предоставляющий кеш для большинства запросов DNS.
nscd_nischeck проверяет необходимость защищенного или простого запроса к NIS+.
pcprofiledump — делает дамп информации, генерируемой профилем PC.
pt_chown — вспомогательная программа для grantpt. Устанавливает владельца, группу и права доступа дополнительного терминала pseudo.
rpcgen генерирует код C для реализации протокола RPC.
rpcinfo создает RPC вызов на сервер RPC.
sln используется для создания символических ссылок. Программа скомпонована статически, так что она используется для создания символических ссылок на динамические библиотеки если система динамической компоновки по каким-либо причинам нефункциональна.
sprof читает и отображает профильные данные распределяемого объекта.
tzselect спрашивает пользователя о его местонахождении и возвращает описание соответствующей временной зоны.
xtrace трассирует выполнение программы печатая исполняемую в данный момент функцию.
zdump делает дамп временной зоны.
zic — компилятор временных зон.
ld.so — вспомогательная программа для исполняемых файлов распределяемых библиотек.
libBrokenLocale используется программами, такими как Mozilla, для использования поврежденных локалей.
libSegFault обрабатывает ошибки распределения памяти (segmentation fault). Она пытается их перехватить.
libanl — библиотека асинхронных запросов DNS.
libbsd-compat — поддерживает портируемость, необходимую для запуска некоторых BSD программ под Linux.
libc — главная библиотека C — набор часто используемых функций.
libcrypt — криптографическая библиотека.
libdl — библиотека интерфейса динамического подключения.
libg — библиотека времени выполнения для g++.
libieee — библиотека IEEE для операцией с числами с плавающей запятой.
libm — математическая библиотека.
libmcheck содержит код запуска при загрузке.
libmemusage используется memusage для сбора информации о памяти, используемой программой.
libnsl — библиотека сетевых сервисов.
libnss* — библиотеки Name Service Switch, содержащие функции для работы с именами хостов, пользователей и групп, псевдонимами, сервисами, протоколами и всем чем можно.
libpcprofile содержит профили функций, используемых для отслеживания времени, затрациваемого процессором на выполнения строк кода.
libpthread — библиотека потоков POSIX.
libresolv содержит функции для создания, отправки и интерпритации пакетов серверов доменных имен (DNS) Internet.
librpcsvc содержит функции, обеспецивающие различные сервисы RPC.
librt содержит функции, обеспечивающие большинство интерфейсов, описанных в POSIX.1b Realtime Extension.
libthread_db содержит функции, используюшиеся для сборки отладчиков для многопоточных приложений.
libutil содержит код «стандартных» функций, использующихся во многих утилитах Unix.
Зависимости установки Glibc
Glibc зависит от: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.
| Назад | В начало | Далее |
| Gettext | Наверх | Grep |
Glibc что это
Термин «libc» обычно используется как сокращение обозначения «стандартной библиотеки C» — библиотеки стандартных функций, которые могут использоваться всеми программами, написанными на C (и, иногда, программами, написанными на других языках). Из-за некоторых исторических событий (см. ниже), использование термина «libc» как обозначение стандартной библиотеки С в Linux, несколько некорректно.
glibc
Вне всяких сомнений, наиболее широко используемой в Linux библиотекой C является библиотека GNU C (http://wwwgnuorg/software/libc/) часто упоминаемая как glibc. В настоящее время данная библиотека используется во всех основных дистрибутивах Linux. Также эта библиотека описана в соответствующих справочных страницах проекта man-pages (в основном, в разделе 3). Документация к glibc также доступна в руководстве glibc, доступном по команде info libc. Выпуск 1.0 glibc состоялся в сентябре 1992 года (до этого было несколько выпусков 0.x). Следующий большой выпуск glibc версии 2.0 состоялся в начале 1997 года. Путь /lib/libc.so.6 (или подобный), обычно является символической ссылкой на расположение библиотеки glibc, а выполнение этого пути приводит к отображению различной информации о glibc, установленной в системе.
Linux libc
В первой половине 1990х годов какое-то время существовала Linux libc, ответвление glibc 1.x, созданное разработчиками Linux, которые были не удовлетворены ходом разработки glibc для Linux. Часто, эту библиотеку называли (необоснованно) просто «libc». Было несколько основных версий Linux libc — 2, 3, 4 и 5 (а также много промежуточных). Некоторое время Linux libc была стандартной библиотекой Си во многих дистрибутивах Linux. Однако, несмотря на всю первоначальную заинтересованность в разработке Linux libc, к этому времени была выпущена glibc 2.0 (в 1997 году), которая была однозначно лучше Linux libc, и все основные дистрибутивы Linux, которые использовали Linux libc, скоро переключились обратно на glibc. Так как этот переход произошёл давно, в man-pages Linux libc больше не описывается. Тем не менее упоминание о Linux libc сохранилось в некоторых справочных страницах под именами libc4 и libc5.
Другие библиотеки C
Существует несколько других менее распространённых библиотек C для Linux Эти библиотеки, обычно, меньше glibc, как по возможностям так и по потреблению памяти, и часто предназначены для сборки исполняемых файлов малого размера, используемых, в основном, для разработки встраиваемых систем Linux. Такими библиотеками являются uClibc dietlibc и musl libc Описание этих библиотек охватывается проектом man-pages, если что-то известно.
Glibc
glibc — GNU C Library (GNU библиотека Си). Стандартная библиотека языка Си из проекта GNU. Она написана Free Software Foundation для GNU операционных систем. Glibc выпущена под лицензией GNU LGPL.
История
Вначале glibc была написана Роландом Макгратом (Roland McGrath), работавшем в FSF в 1980-x годах. В феврале 1988 года FSF представила glibc как библиотеку, имеющую наиболее полную функциональность, требуемую для ANSI C.
Временный форк glibc
В начале 1990-х годов разработчики ядра Linux создали форк glibc. Он был назван «Linux libc». Когда FSF выпустила в 1996 году glibc 2.0, которая поддерживала IPv6, 64-битный доступ к данным, многопотоковые приложения, совместимость с будущими версиями и более переносимый исходный код, разработчики Linux прервали разработку Linux libc и начали использовать glibc от FSF.
Поддерживаемые архитектуры и ядра
Glibc используется в системах, на которых работает много разных ОС, и на разных архитектурах. Наиболее часто glibc используется на x86-машинах с ОС GNU/Linux. Также официально поддерживаются следующие архитектуры: SPARC, Motorola 68k, DEC Alpha, PowerPC, ARM, ETRAX CRIS, s390.
Критика
glibc часто критикуют за её «раздутость» и медленную скорость работы по сравнению с другими прошлыми библиотеками. Поэтому были созданы несколько альтернативных стандартных библиотек языка Си (dietlibc, uClibc и Newlib).
Примечания
- ↑Drepper, Ulrichglibc 2.11. Список рассылки libc-alpha (30 октября 2009). Проверено 11 ноября 2009.
Ссылки
- Официальная страница (данные несколько устарели)
- Страница разработчиков glibc