Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Linux API состоит из интерфейса системы вызовов в Linux ядра, в GNU C Library (по GNU ), libdrm , libalsa и libevdev (по freedesktop.org ).
GNU C Library обертка вокруг системных вызовов в ядре Linux .
Linux ядра и GNU C Library вместе образуют API Linux . После компиляции двоичные файлы предлагают ABI .

Библиотека GNU C , широко известная как glibc , является реализацией стандартной библиотеки C в рамках проекта GNU . Несмотря на свое название, теперь он также напрямую поддерживает C ++ (и, косвенно, другие языки программирования ). Он был начат в 1980-х годах Фондом свободного программного обеспечения (FSF) для своей операционной системы GNU .

Выпущенный под GNU Lesser General Public License , [3] Glibc является свободным программным обеспечением . Проект GNU C Library предоставляет базовые библиотеки для системы GNU и систем GNU / Linux, а также для многих других систем, использующих Linux в качестве ядра . Эти библиотеки предоставляют важные API-интерфейсы, включая ISO C11 , POSIX.1-2008 , BSD , API-интерфейсы для конкретных ОС и другие. Эти API включают такие базовые возможности, как open , read , write , malloc , printf , getaddrinfo ,dlopen , pthread_create , crypt , вход , выход и многое другое.

История [ править ]

Первоначально проект glibc был написан в основном Роландом МакГратом , который в подростковом возрасте работал в Free Software Foundation (FSF). [4]

В феврале 1988 года ФФС описано Glibc как будто они почти завершили функциональные возможности, необходимые ANSI C . [5] К 1992 году в нем были реализованы функции ANSI C-1989 и POSIX.1-1990, и работа над POSIX.2 велась. [6]

В сентябре 1995 года Ульрих Дреппер сделал свой первый вклад в проект glibc и в течение 1990-х годов постепенно стал основным разработчиком и сопровождающим glibc. [7] Дреппер занимал должность сопровождающего в течение многих лет и до 2012 года собрал 63% всех коммитов по проекту. [8]

Linux libc [ править ]

В начале 1990-х разработчики ядра Linux разделили glibc. Их форк, "Linux libc", поддерживался отдельно.

Когда в январе 1997 года FSF выпустила glibc 2.0, разработчики ядра прекратили поддержку Linux libc из-за превосходного соответствия glibc 2.0 стандартам POSIX. [9] glibc 2.0 также имел лучшую интернационализацию и более глубокую трансляцию, возможности IPv6 , 64-битный доступ к данным, возможности для многопоточных приложений, совместимость с будущими версиями и более переносимый код. [10]

Последняя использованная версия Linux libc использовала внутреннее имя ( soname ) libc.so.5 . Исходя из этого, glibc 2.x в Linux использует soname libc.so.6 [11] ( вместо этого в архитектурах Alpha и IA64 используется libc.so.6.1 ). Имя файла * .so часто сокращается до libc6 (например, в имени пакета в Debian ) в соответствии с обычными соглашениями для библиотек.

По словам Ричарда Столлмана , FSF не смогла объединить изменения, внесенные в libc Linux, в glibc из-за неопределенного авторства. Проект GNU довольно строго относится к записи авторских прав и авторов. [12]

Создание руководящего комитета [ править ]

Начиная с 2001 года развитие библиотеки контролировалось комитетом [13], при этом Ульрих Дреппер [14] оставался ведущим участником и сопровождающим. Создание руководящего комитета вызвало общественные споры, так как Ульрих Дреппер открыто охарактеризовал его как неудачный маневр враждебного поглощения, совершенный Ричардом Столлманом. [15] [16] [17]

Миграция на Git, распределенную систему контроля версий [ править ]

Ранее в репозитории CVS , в 2009 году glibc была перенесена в репозиторий Git (распределенная система контроля версий) на Sourceware . [18]

Debian переходит на EGLIBC и обратно [ править ]

После долгих споров о стиле руководства Дреппера и принятии внешнего вклада [19] [20] [21] Debian публично перешел на форк glibc EGLIBC в 2009 году [22] и вернулся к glibc с выпуском Debian 8.0 (Jessie) в апреле 2015 года. [23]

Руководящий комитет распускается [ править ]

В марте 2012 года руководящий комитет проголосовал за роспуск и удаление Drepper в пользу процесса разработки, управляемого сообществом, при этом Райан Арнольд, Максим Кувырков, Джозеф Майерс, Карлос О'Донелл и Александр Олива несут ответственность за поддержку GNU (но без дополнительных полномочий для принятия решений). [24] [25]

После изменения в поддержке glibc Debian и другие проекты, которые перешли на альтернативы, мигрировали обратно в glibc. [26] С начала 2014 года форк glibc EGLIBC больше не разрабатывается, поскольку его «цели теперь решаются непосредственно в GLIBC».

В июле 2017 года, через 30 лет после создания glibc, Роланд МакГрат объявил о своем уходе, «объявив себя почетным сопровождающим и отказавшись от прямого участия в проекте. Последние несколько месяцев, если не последние несколько лет, доказали, что вы этого не сделаете. нужен мне больше ". [4]

История версий [ править ]

Для большинства систем версию glibc можно получить, выполнив файл lib (например, /lib/libc.so.6).

Функциональность [ править ]

glibc обеспечивает функциональность, требуемую единой спецификацией UNIX , POSIX (1c, 1d и 1j), а также некоторые функции, необходимые для интерфейсов ISO C11 , ISO C99 , Berkeley Unix (BSD), определения интерфейса System V (SVID) и X / Open Portability Guide (XPG), выпуск 4.2, со всеми расширениями, общими для систем, совместимых с XSI ( X / Open System Interface ), а также со всеми расширениями X / Open UNIX.

Кроме того, glibc также предоставляет расширения, которые были сочтены полезными или необходимыми при разработке GNU .

Поддерживаемое оборудование и ядра [ править ]

glibc используется в системах, в которых работает много разных ядер и аппаратных архитектур. Чаще всего он используется в системах, использующих ядро Linux на оборудовании x86 , однако официально поддерживаемое оборудование [42] включает: 32-битную ARM и ее новую 64-битную ISA (AArch64) , C-SKY , DEC Alpha , IA-64. , Motorola m68k , MicroBlaze , MIPS , Nios II , PA-RISC , PowerPC , RISC-V , s390 , SPARC иx86 (старые версии поддерживают TILE ). Он официально поддерживает ядра Hurd и Linux . Кроме того, существуют сильно пропатченные версии, которые работают на ядрах FreeBSD и NetBSD (из которых построены системы Debian GNU / kFreeBSD и Debian GNU / NetBSD соответственно), а также разветвленная версия OpenSolaris . [43] Он также используется (в отредактированном виде) и называется libroot.so в BeOS и Haiku . [44]

Использование в небольших устройствах [ править ]

В прошлом glibc критиковали как « раздутый » и более медленный, чем другие библиотеки, например Линус Торвальдс [45] и программисты встроенного Linux . По этой причине было создано несколько альтернативных стандартных библиотек C , которые подчеркивают меньшую занимаемую площадь. Тем не менее, многие проекты для небольших устройств используют GNU libc вместо небольших альтернатив из-за поддержки приложений, соответствия стандартам и полноты. Примеры включают Openmoko [46] и Familiar Linux для карманных компьютеров iPaq (при использовании программного обеспечения дисплея GPE ). [47]

Слои совместимости [ править ]

Существуют уровни совместимости (« прокладки »), позволяющие программам, написанным для других экосистем, работать в системах, предлагающих интерфейс glibc. К ним относятся libhybris , уровень совместимости для Android Bionic и Wine , которые можно рассматривать как уровень совместимости от API Windows до glibc и других собственных API, доступных в Unix-подобных системах.

См. Также [ править ]

  • Гнулиб
  • API ядра Linux

Ссылки [ править ]

  1. Корбет, Джонатан (28 марта 2012 г.). «Поворотный момент для GNU libc» . LWN.net.
  2. ^ Adhemerval Zanella (1 февраля 2021). «Библиотека GNU C версии 2.33 теперь доступна» (Список рассылки) . Дата обращения 2 февраля 2020 .
  3. ^ a b "sourceware.org Git - glibc.git / blob - COPYING.LIB" . sourceware.org . Проверено 13 сентября 2017 года .
  4. ^ a b "Роланд МакГрат отказывается от должности сопровождающего glibc [LWN.net]" . lwn.net . 7 июля 2017 . Проверено 8 июля 2017 года .
  5. ^ "Бюллетень GNU, том 1 № 4, февраль 1988 г." . Большинство библиотек готово. Роланд МакГрат […] имеет почти полный набор функций библиотеки ANSI C. Надеемся, они будут готовы весной этого года.
  6. ^ "Бюллетень GNU, том 1 № 12" . Теперь он содержит все функции ANSI C-1989 и POSIX.1-1990, а также ведется работа над функциями POSIX.2 и Unix (BSD и System V).
  7. ^ Журнал изменений glibc на GitHub .
  8. Корбет, Джонатан (28 марта 2012 г.). «Поворотный момент для GNU libc» . LWN.net. Из почти 19 000 коммитов, найденных в репозитории проекта git (который содержит изменения до 1995 года), более 12 000 были сделаны Ульрихом.
  9. ^ "Разветвление: это могло даже случиться с вами" . 12 сентября 2008 г. Раскол между GNU LIBC и Linux LIBC - он продолжался годами, пока Linux стабилизировалась, а затем форки снова объединились в один проект.
  10. ^ Ли, Эллиот (2001). «Техническое сравнение glibc 2.x с устаревшими системными библиотеками» . Архивировано из оригинального 11 апреля 2004 года.
  11. ^ «Страх Разветвляющихся эссе см» 6. glibc -> Linux libc -> glibc " " .
  12. ^ «Страх перед разветвлением, сноска на комментарии Столлмана о слиянии» .
  13. ^ "домашняя страница glibc" . В 2001 году был сформирован Руководящий комитет библиотеки GNU C…, который в настоящее время состоит из Марка Брауна, Пола Эггерта, Андреаса Йегера, Якуба Елинека, Роланда МакГрата и Андреаса Шваба.
  14. ^ "Ульрих Дреппер" . LinkedIn . Проверено 13 июня 2012 года .
  15. ^ Drepper, Ulrich (26 июня 2000). «RMS снова за это» . sourceware.org . Проверено 20 ноября 2015 года .Несколько недель назад RMS начал очередную атаку на меня (одно письмо, затем непрямые попытки получить влияние, а сегодня - еще одно письмо). Суть в том, что он жалуется, что я не следую «политике GNU» и поэтому должен быть заменен руководящим комитетом, частью которого я мог бы быть. Некоторые из вас (а именно Роланд и Андреас С.), вероятно, знают об этом, поскольку он предлагал обоих в качестве других членов комитета. Вдобавок в списке был Марк Браун (я знаю в IBM кого-то с таким именем, который также подошел бы к этой группе, но я не уверен, действительно ли это он). В любом случае, я полностью отвергаю это. Это совсем не помогает, все наоборот. Во-первых, мне не известно ни о каких существенных правилах, которые я нарушаю. Единственное, что яЯ не выполняю приказы RMS, которые явно имеют политические намерения (что, конечно, кощунственно), и, возможно, мне наплевать на Винблоуз (если последний вообще имеет значение). Ничего из этого никоим образом не изменится.
  16. ^ Drepper, Ulrich (15 августа 2001). "glibc 2.2.4" . sourceware.com . Проверено 29 ноября 2015 года . А теперь о некоторых не очень приятных вещах. Столмен недавно предпринял попытку того, что я бы назвал враждебным захватом разработки glibc. Он пытался за моей спиной устроить заговор и убедить других основных разработчиков взять под свой контроль, чтобы в конце концов он все контролировал и мог диктовать все, что ему угодно. Эта попытка провалилась, но он продолжал оказывать давление на людей повсюду, и это стало действительно некрасивым. В конце концов я согласился на создание так называемого «руководящего комитета» (СК).
  17. ^ RMS-обвиняемый-в-попытке-glibc-враждебном захвате на сайте slashdot.com, 19 августа 2001 г.
  18. ^ Репозиторий glibc на Sourceware.com
  19. ^ Ульрих Дреппер 2007-10-03, 06:13:55 UTC «Это не имеет ничего общего с« только x86 ». Все ABI, разработанные людьми, которые немного понимают, не требуют изменений. Любое изменение отрицательно повлияет на хорошо спроектированные архитектуры для единственное преимущество этой встроенной хрени. Но ваша собственная версия файла в аддоне ".
  20. ^ Drepper, Ulrich (25 мая 2005). «Диктатура меньшинств» . udrepper.livejournal.com . Проверено 15 января 2012 года .Какие архитектуры стоит поддерживать? […]. Мы не только должны искать нерелевантность (какой процент заботится о поддержке Vax, PArisc), мы также должны смотреть на уровень дополнительной сложности, который требуется для поддержки. Некоторые ABI просто намеренно определены, чтобы отличаться от других (см. IA-64), что требует огромных усилий. Возможности также существенно расходятся (например, отсутствие атомарных операций в слишком большом количестве архитектур). Это слишком часто приводит к излишнему искажению кода, поскольку писать код таким образом, чтобы его можно было оптимально использовать во всех ситуациях, очень сложно. Решение должно заключаться в том, чтобы ограничить поддержку только горсткой архитектур, которые поддерживаются в проекте. Вся остальная поддержка должна происходить за пределами дерева, и поэтому всю работу должны выполнять группы с особыми интересами.Я не хочу сказать, что мы точно следуем всем этим пунктам, но для большого проекта glibc, безусловно, ближе всего подходит к этому.
  21. Ярно, Орелиен (5 мая 2009 г.). «Debian переходит на EGLIBC» . aurel32.net . Проверено 15 января 2012 года . Более дружественный апстрим (особенно в отношении встроенных архитектур): «Поощряйте сотрудничество, общение, вежливость и уважение среди разработчиков» (в отличие от этого).
  22. ^ Тимоти (6 мая 2009 г.). «Переход Debian с Glibc на Eglibc» . Slashdot . Проверено 14 января 2012 года .
  23. ^ Журнал изменений пакета Debian
  24. Перейти ↑ McGrath, Roland (26 марта 2012 г.). "роспуск руководящего комитета glibc" . Sourceware.org . Проверено 13 июня 2012 года .
  25. ^ Майерс, Джозеф С. (26 марта 2012 г.). «Разработка и сопровождение библиотеки GNU C» . Sourceware.org . Проверено 13 июня 2012 года .
  26. ^ «Debian переключается (обратно) на GLIBC» . Орелиен. 19 июня 2014 . Проверено 19 июня 2014 .
  27. ^ "CosmicCuttlefish / ReleaseNotes - Ubuntu Wiki" .
  28. ^ «Глава 5. RHEL 8.0.0, выпуск Red Hat Enterprise Linux 8» .
  29. ^ «Глава 2. Что нового в Debian 10» .
  30. ^ "Изменения / GLIBC228" .
  31. ^ "Red Hat Bugzilla - Ошибка 1598403" .
  32. ^ "sourceware.org Git - glibc.git / blob - НОВОСТИ" .
  33. ^ "DiscoDingo / ReleaseNotes - Ubuntu Wiki" .
  34. ^ "Изменения / GLIBC229" .
  35. ^ "Red Hat Bugzilla - Ошибка 1653403" .
  36. ^ "sourceware.org Git - glibc.git / blob - НОВОСТИ" .
  37. ^ "EoanErmine / ReleaseNotes - Ubuntu Wiki" .
  38. ^ "Изменения / GLIBC230" .
  39. ^ «Focal (20.04): пакет glibc: Ubuntu» .
  40. ^ "Изменения / GLIBC231" .
  41. ^ "Библиотека GNU C версии 2.32 теперь доступна" . sourceware.org . Проверено 13 августа 2020 .
  42. ^ "Сопровождающие машины библиотеки GNU C" .
  43. ^ Бартли, Дэвид; Спанг, Майкл. «GNU / kOpenSolaris (GNU libc / base + ядро ​​OpenSolaris)» . Проверено 16 декабря 2008 года .
  44. ^ "Источник хайку" . libroot.so не является частью проекта GNU и включен в исходный код Haiku.
  45. Торвальдс, Линус (9 января 2002 г.). "Отправка сообщений в список рассылки glibc" .
  46. ^ "Компоненты OpenMoko" . Мы будем использовать glibc (не uClibC)… Альтернативы могут сэкономить больше места и быть более оптимизированными, но с большей вероятностью доставят нам головные боли при интеграции.
  47. ^ "Re: [Familiar] Какой glibc для Familiar 0.8.4?" . Вопрос: какая версия GLIBC использовалась для сборки Familiar 0.8.4? Ответ: 2.3.3

Внешние ссылки [ править ]

  • Официальный сайт