Библиотека GNU C

редактировать
Стандартная библиотека C проекта GNU

Библиотека GNU C
Heckert GNU white.svg
Первоначальный автор (авторы) Роланд МакГрат
Разработчик (и) Проект GNU
Первоначальный выпуск1987 г.; 33 года назад (1987)
Стабильный выпуск 2.32 (5 августа 2020 г.; 2 месяца назад (2020-08-05))
Репозиторий Отредактируйте это в Wikidata
Написано вC
Операционная система Unix-подобная
Тип Библиотека времени выполнения
Лицензия LGPLv2.1
Веб-сайтwww.gnu.org / software / libc /
Linux API состоит из интерфейса системных вызовов ядра Linux, GNU Библиотека C (от GNU ), libdrm, libalsa и libevdev (от freedesktop.org ). GNU C Библиотека - это оболочка для системных вызовов ядра Linux. . Ядро Linux и библиотека GNU C вместе образуют Linux API. компиляции, двоичные файлы предлагают ABI.

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

Выпущенная на условиях Стандартной общественной лицензии ограниченного применения GNU, glibc является бесплатным программным обеспечением. Проект библиотеки GNU C предоставляет базовые библиотеки для системы GNU и систем GNU / Linux, а также для многих других систем, использующих Linux в качестве ядра. Эти библиотеки предоставляют важные API, включая ISO C11, POSIX.1-2008, BSD, для конкретных ОС API и многое другое. Эти API включают такие базовые возможности, как open, read, write, malloc, printf, getaddrinfo, dlopen, pthread_create, crypt, login, exit и другие.

Содержание
  • 1 История
    • 1.1 Linux libc
    • 1.2 Установка руководящего комитета
    • 1.3 Миграция на Git, распределенную VCS
    • 1.4 Debian переключается на EGLIBC и обратно
    • 1.5 Управление комитет распускает
    • 1.6 История версий
  • 2 Функциональность
    • 2.1 Поддерживаемое оборудование и ядра
    • 2.2 Использование в небольших устройствах
  • 3 Уровня совместимости
  • 4 См. также
  • 5 Ссылки
  • 6 Внешние ссылки
История

Первоначально проект glibc был написан в основном подростком, работавшим на Free Software Foundation (FSF) в 1980-х.

В Февраль 1988, FSF описал glibc как почти выполнившую функциональность, требуемую ANSI C. К 1992 году в нем были реализованы функции ANSI C-1989 и POSIX.1-1990, и велась работа над POSIX.2.

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

Linux libc

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

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

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

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

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

Начиная с 2001 года разработка библиотеки контролировалась комитетом, который оставался ведущим участником и сопровождающим.. Установка руководящего комитета была окружена общественными спорами, поскольку Ульрих Дреппер открыто описал ее как неудачный враждебный захват маневром Ричарда Столлмана.

Мигрировал в Git, распределенная VCS

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

Debian переходит на EGLIBC и обратно

После долгих споров вокруг стиля руководства Drepper и принятия внешнего вклада Debian публично переключился на форк glibc EGLIBC в 2009 году и вернуться к glibc с выпуском Debian 8.0 (Jessie) в апреле 2015 года.

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

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

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

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

История версий

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

ВерсияДатаПримечанияПринятие
0,1 - 0,6Октябрь 1991 г. - февраль 1992 г.
1,0февраль 1992 г.
1,01 - 1,09,3март 1992 г. - декабрь 1994 г.
1,90 - 1,102май 1996 г. - январь 1997 г.
2,0Январь 1997 г.
2.0.1Январь 1997 г.
2.0.2Февраль 1997 г.
2.0.91декабрь 1997 г.
2.0.95июль 1998 г.
2,1февраль 1999 г.
2.1.1март 1999 г.
2,2ноябрь 2000 г.
2,2.1январь 2001
2.2.2февраль 2001
2.2.3март 2001
2.2.4Июль 2001
2.3октябрь 2002
2.3.1октябрь 2002
2.3.2февраль 2003Debian 3.1 (Sarge)
2.3.3декабрь 2003 г.
2.3.4декабрь 2004 г.Стандарт для Linux Standard Base (LSB) 3.0RHEL 4 (Обновление 5)
2.3.5апрель 2005 г.SLES 9
2.3.6ноябрь 2005 г.Debian 4,0 (Etch)
2,4март 2006 г.Стандарт для LSB 4.0, начальная inotify поддержкаSLES 10
2.5сентябрь 2006 г.Полная inotify supportRHEL 5
2.6май 2007
2.7октябрь 2007Debian 5 (Lenny), Ubuntu 8.04
2.8апрель 2008 г.
2,9ноябрь 2008 г.
2,10май 2009 г.
2,11октябрь 2009 г.SLES 11, Ubuntu 10.04, eglibc используется в Debian 6 (Squeeze)
2.12май 2010RHEL 6
2.13январь 2011eglibc 2.13 используется в Debian 7 (Wheezy)
2.14июнь 2011 г.
2,15март 2012 г.Ubuntu 12.04 и 12.10
2.16июнь 2012 г.поддержка x32 ABI, Соответствие ISO C11, SystemTap
2.17декабрь 2012 г.Поддержка 64-битного ARM Ubuntu 13.04, RHEL 7
2.18Август 2013 г.Улучшенная поддержка C ++ 11. Поддержка блокировки Intel TSX. Поддержка микроархитектур Xilinx MicroBlaze и IBM POWER8.Fedora 20
2.19февраль 2014 г.SystemTap. для malloc. Поддержка косвенной функции GNU (IFUNC) для ppc32 и ppc64. Новый макрос проверки функций _DEFAULT_SOURCE для замены _SVID_SOURCE и _BSD_SOURCE. Предварительная документация по безопасности для всех функций в руководстве. Изменение ABI в ucontext и jmp_buf для s390 / s390x.Ubuntu 14.04, eglibc 2.19, используемый в Debian 8 (Jessie), openSUSE 13, SLES 12
2.20Сентябрь 2014 г.Поддержка блокировок описания файловFedora 21
2.21Февраль 2015 г.Новая реализация семафораUbuntu 15.04, Fedora 22
2.22Август 2015 г.Поддержка включения Google Native Client (NaCl), который изначально работал на x86, работал на ARMv7-A, Unicode 7.0Fedora 23
2.23Февраль 2016 г.Unicode 8.0Fedora 24, Ubuntu 16.04
2.24Август 2016 г.Некоторые устаревшие функции были удаленыFedora 25, Ubuntu 16.10 и 17.04, Debian 9 (Stretch)
2.25февраль 2017 г.getentropyи Были добавлены функции getrandomи файл заголовка .Fedora 26
2.26август 2017 г.Улучшено выполнение (поточный кеш для malloc), поддержка Unicode 10Fedora 27, Ubuntu 17.10
2.27февраль 2018 г.Оптимизация производительности. RISC-V support.Fedora 28, Ubuntu 18.04
2.28август 2018 г.statx, renameat2, Unicode 11.0.0Ubuntu 18.10, RHEL 8.0.0, Debian 10 (Buster), Fedora 29
2.29февраль 2019
  • getcpuоболочка
  • создайте и установите все локали как каталоги с файлами
  • оптимизированными тригономическими функциями
  • Transactional Lock Elision для powercp64le ABI
  • posix_spawn_file_actions_addchdir_np и posix_spawn_file_actions_addfchdir_np>
  • больше не запускать обработчики atfork
  • поддержка C-SKY ABIV2, работающего в Linux
  • форматирование по умолчанию альтернативного года локали в strftime; флаги '_' и '-' теперь могут быть применены к его "% EY"
Ubuntu 19.04, Fedora 30
2.30август 2019Unicode 12.1.0, динамический компоновщик принимает аргумент --preloadдля предварительной загрузки общих объектов, функция gettidбыла добавлена ​​в Linux, поддержка календаря Minguo (Китайская Республика), новая японская эра добавлена ​​в ja_JP локаль, функции выделения памяти не работают, если общий размер объекта превышает PTRDIFF_MAX; CVE - 2019-7309 и CVE- 2019-9169 исправленоUbuntu 19.10, Fedora 31
2.31Февраль 2020Начальная C2x стандартная поддержкаUbuntu 20.04, Fedora 32
2.32Август 2020Unicode 13.0, атрибут 'access' для более точных предупреждений в GCC 10, то есть для «помощи в обнаружении переполнения буфера и других выходов за границы»
Функциональность

glibc обеспечивает функциональность, требуемую Single 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 UNIX.

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

Поддерживаемое оборудование и ядра

glibc используется в системах, в которых работает множество различных ядра и различные аппаратные архитектуры. Чаще всего он используется в системах, использующих ядро ​​Linux на оборудовании x86, однако официально поддерживаемое оборудование включает: 32-битный ARM и его новый 64-битный ISA (AArch64), 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. Он также используется (в отредактированном виде) и называется libroot.so в BeOS и Haiku.

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

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

Уровни совместимости

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

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
На Викискладе есть материалы, связанные с Библиотека GNU C.
Последняя правка сделана 2021-05-21 09:10:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте