glibc
| В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 9 апреля 2012. |
| Тип |
Библиотека исполнения |
|---|---|
| Разработчики | |
| Написана на | |
| Операционная система |
кроссплатформенная |
| Аппаратная платформа |
кроссплатформенная |
| Последняя версия | |
| Состояние |
Актуальный |
| Лицензия | |
| Сайт | |
glibc — GNU C Library (GNU библиотека). Glibc является библиотекой Си, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т.д. Библиотека C используется для всех динамически скомпонованых программ. Она написана Free Software Foundation для GNU операционных систем. glibc выпущена под лицензией GNU LGPL.
Содержание
История[править | править вики-текст]
Вначале glibc была написана Роландом Макгратом, работавшим в FSF в 1980-x годах. В феврале 1988 года FSF представила glibc как библиотеку, имеющую наиболее полную функциональность, требуемую для ANSI C.
Временный форк glibc[править | править вики-текст]
В начале 1990-х годов разработчики ядра Linux создали форк glibc. Этот форк, названый «Linux libc», разрабатывался отдельно в течение нескольких лет, были выпущены версии с 2 до 5.
Когда FSF выпустила в 1996 году glibc 2.0, которая поддерживала IPv6, 64-битный доступ к данным, многопотоковые приложения, совместимость с будущими версиями и более переносимый исходный код[2], разработчики Linux прервали разработку Linux libc и начали использовать glibc от FSF.[3]
Файл .so последней версии Linux libc имел имя (soname) libc.so.5. Следующая после неё glibc 2.x использовала имя libc.so.6[4] (на архитектурах Alpha и IA64 вместо этого используется имя libc.so.6.1). Это имя зачастую сокращается до libc6 (например в имени пакета Debian), следуя обычным соглашениям для библиотек.
По словам Ричарда Столлмана изменения из Linux libc нельзя перенести обратно в glibc, потому что авторство этого кода неясно, а проект GNU очень строго относится к сохранению записей об авторских правах.[5]
История версий[править | править вики-текст]
| Версия | Дата | Примечания |
|---|---|---|
| 2.20 | сентябрь 2014 | |
| 2.19 | февраль 2014 | |
| 2.18 | август 2013 | Улучшена поддержка стандарта ISO C11. Поддержка микроархитектуры Xilinx MicroBlaze и IBM POWER8 |
| 2.17 | декабрь 2012 | Поддержка 64-битной архитектуры ARM |
| 2.16 | июнь 2012 | Поддержка x32 ABI, стандарт ISO C11, SystemTap |
| 2.15 | март 2012 | |
| 2.14 | июнь 2011 | |
| 2.13 | январь 2011 | |
| 2.12 | май 2010 | Использована в RHEL 6 |
| 2.11 | октябрь 2009 | Использована в SLES 11, eglibc 2.11 использована в Debian 6 (Squeeze) |
| 2.10 | май 2009 | |
| 2.9 | ноябрь 2008 | Использована в Ubuntu 9.04 |
| 2.8 | апрель 2008 | Использована в Ubuntu 8.10 |
| 2.7 | октябрь 2007 | Debian 5 (Lenny), Ubuntu 8.04 |
| 2.6 | май 2007 | |
| 2.5 | сентябрь 2006 | Использована в RHEL 5 |
| 2.4 | март 2006 | Стандарт в LSB 4.0, использована в SLES 10 |
| 2.3.6 | ноябрь 2005 | Debian 4.0 (Etch) |
| 2.3.5 | апрель 2005 | Использована в SLES 9 |
| 2.3.4 | декабрь 2004 | Стандарт в LSB 3.0, использована в RHEL 4 (Update 5) |
| 2.3.2 | февраль 2003 | Debian 3.1 (Sarge) |
| 2.3 | октябрь 2002 | |
| 2.2.4 | июль 2001 | |
| 2.2 | ноябрь 2000 | |
| 2.1.1 | март 1999 | |
| 2.1 | февраль 1999 | |
| 2.0.95 | июль 1998 | |
| 2.0 | январь 1997 | |
| 1.90 — 1.102 | май 1996 — январь 1997 | |
| 1.01 — 1.09.3 | март 1992 — декабрь 1994 | |
| 1.0 | февраль 1992 | |
| 0.1 — 0.6 | октябрь 1991 — февраль 1992 |
Поддерживаемые архитектуры и ядра[править | править вики-текст]
Glibc используется в системах, на которых работает много разных ОС, и на разных архитектурах. Наиболее часто glibc используется на x86-машинах с ОС Linux. Также официально поддерживаются следующие архитектуры: SPARC, Motorola 68k, DEC Alpha, PowerPC, ARM, ETRAX CRIS, s390.
Критика[править | править вики-текст]
glibc часто критикуют за её «раздутость» и низкую скорость работы по сравнению с другими прошлыми библиотеками. Поэтому были созданы несколько альтернативных стандартных библиотек языка Си (dietlibc, uClibc, Newlib, musl, Klibc). Так же под критику попадает мейнтейнер Ульрих Дреппер и его отношение к ошибкам в Glibc.
В 2009 году в таких популярных дистрибутивах, как Debian[6], Ubuntu и ArkLinux[7] glibc был заменён на альтернативную библиотеку eglibc, изначально ориентированную на встраиваемые системы. Eglibc - это вариант glibc, более дружелюбно относящийся к приёму сторонних патчей. Однако 18 июня 2014 года один из мэйнтейнеров пакетов дистрибутива Debian объявил о замене библиотеки eglibc на библиотеку glibc[8].
Примечания[править | править вики-текст]
- ↑ https://sourceware.org/ml/libc-alpha/2015-02/msg00119.html
- ↑ Elliot Lee. A Technical Comparison of glibc 2.x With Legacy System Libraries (англ.) (2001). Архивировано из первоисточника 11 апреля 2004.
- ↑ Forking: it could even happen to you (англ.). — «the split between GNU LIBC and the Linux LIBC -- it went on for years while Linux stabilized, and then the forks re-merged into one project» Архивировано из первоисточника 21 января 2013.
- ↑ Fear of Forking essay, see "6. glibc --> Linux libc --> glibc" (англ.). Архивировано из первоисточника 21 января 2013.
- ↑ Fear of Forking, footnote on Stallman's merge comments (англ.). Архивировано из первоисточника 21 января 2013.
- ↑ Debian is switching to EGLIBC Aurelien’s weblog, May 5th 2009 (англ.)
- ↑ Ark Linux switches to eglibc Ark Linux weblog, May 13 2009 (англ.)
- ↑ Debian is switching (back) to GLIBC Aurelien’s weblog, June 18th 2014 (англ.)
Ссылки[править | править вики-текст]
| Проект GNU | ||
|---|---|---|
| История | ||
| Лицензии | ||
| Программное обеспечение |
||
| Персоналии | ||
| Другие темы | ||
| Язык программирования Си | |
|---|---|
| ANSI C (C89 и C90) • C99 • C11 | |
| Компиляторы | Borland Turbo C • Clang • GCC • LCC • Pelles C • PCC • TCC • Visual C++ (C++/CLI • C++/CX) • Watcom C/C++ compiler |
| Библиотеки | Стандартная библиотека языка Си • glibc • dietlibc • uClibc • Newlib • Eglibc • Bionic |
| Особенности | C-строка • Синтаксис • Препроцессор • Заголовочные файлы • Типы и объявления переменных • Функции |
| Некоторые потомки | C++ • C# • D • Objective-C • Swift • Java • Alef • Limbo • Go • Vala |
| C и другие языки | C и C++ (Совместимость • Операторы) • Сравнение Pascal и C • Компилятор C в байт-код Java |

