glibc (GNU C Library — GNU-библиотека) — библиотекаСи, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т. д. Библиотека C используется для всех динамически скомпонованных программ. Она написана Free Software Foundation для операционных систем GNU. glibc выпущена под лицензией GNU LGPL.
История
Первоначально glibc была написана Роландом Макгратом, работавшим в FSF в 1980-x годах. В феврале 1988 года FSF представил glibc как библиотеку, имеющую почти полную функциональность, требуемую стандартом ANSI C[7].
Временный форк glibc
В начале 1990-х годов разработчики ядра Linux создали форк glibc. Этот форк, названный «Linux libc», разрабатывался отдельно в течение нескольких лет, были выпущены версии с 2 до 5.
Когда FSF выпустила в 1996 году glibc 2.0, которая поддерживала IPv6, 64-битный доступ к данным, многопотоковые приложения, совместимость с будущими версиями и более переносимый исходный код[8], разработчики Linux прервали разработку Linux libc и начали использовать glibc от FSF.[9]
Файл .so последней версии Linux libc имел имя (soname) libc.so.5. Следующая после неё glibc 2.x использовала имя libc.so.6[10] (на архитектурах Alpha и IA64 вместо этого используется имя libc.so.6.1). Это имя зачастую сокращается до libc6 (например, в имени пакета Debian), следуя обычным соглашениям для библиотек.
По словам Ричарда Столлмана изменения из Linux libc нельзя перенести обратно в glibc, потому что авторство этого кода неясно, а проект GNU очень строго относится к сохранению записей об авторских правах.[11]
История версий
Поддерживаемые архитектуры и ядра
Glibc используется в системах, на которых работает много разных ОС, и на разных архитектурах. Наиболее часто glibc используется на x86-машинах с ОС Linux. Также официально поддерживаются следующие архитектуры: SPARC, Motorola 68k, DEC Alpha, PowerPC, ARM, s390[15].
Критика
glibc часто критикуют за её «раздутость» и низкую скорость работы по сравнению с другими прошлыми библиотеками[16]. Поэтому были созданы несколько альтернативных стандартных библиотек языка Си (dietlibc, uClibc, Newlib, musl, Klibc). Также под критику попадает мейнтейнер Ульрих Дреппер и его отношение к ошибкам в glibc[17].
В 2009 году в таких популярных дистрибутивах, как Debian[18], Ubuntu и ArkLinux[19] glibc был заменён на альтернативную библиотеку eglibc, изначально ориентированную на встраиваемые системы. Eglibc — это вариант glibc, более дружелюбно относящийся к приёму сторонних патчей. Однако 18 июня 2014 года один из мэйнтейнеров пакетов дистрибутива Debian объявил об обратной замене библиотеки eglibc на библиотеку glibc[20].
2024: выявлена критическая уязвимость в GNU C Library (glibc), открывающую возможность для повышения привилегий до уровня root[21].
Примечания
- ↑Hüttel A. K.The GNU C Library version 2.43 is now available (англ.) — 2026.
- ↑https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/tzfile.h;hb=HEAD
- ↑ 12Olson A., Eggert P., Murchison K. 8.1 // The Time Zone Information Format (TZif) (англ.) — IETF, 2019. — P. 18. — 34 p. — doi:10.17487/RFC8536
- ↑https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/zic.c;hb=HEAD
- ↑ 123Free Software Directory
- ↑https://sourceware.org/git/?p=glibc.git;a=commit;h=41bdb6e20c5d2df34a740cbd70e11c05025dfd12
- ↑Free Software Foundation.GNU's Bulletin, vol. 1 no. 4, February, 1988. Дата обращения: 16 декабря 2016. Архивировано 16 апреля 2016 года.
- ↑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" (англ.). Дата обращения: 12 января 2013. Архивировано из оригинала 18 июля 2014 года.
- ↑Fear of Forking, footnote on Stallman's merge comments (англ.). Архивировано из оригинала 21 января 2013 года.
- ↑The GNU C Library version 2.32 is now available. sourceware.org. Дата обращения: 13 августа 2020. Архивировано 28 сентября 2020 года.
- ↑sourceware.org Git – glibc.git/blob – NEWS. Дата обращения: 6 февраля 2024. Архивировано 26 сентября 2019 года.
- ↑sourceware.org Git – glibc.git/blob – NEWS. Дата обращения: 6 февраля 2024. Архивировано 21 марта 2022 года.
- ↑MAINTAINERS - glibc wiki. sourceware.org. Дата обращения: 16 декабря 2016. Архивировано 18 апреля 2016 года.
- ↑Torvalds, Linus (9 января 2002). Re: [libc-alpha] Re: [open-source] Re: Wish for 2002 (Mailing list). Архивировано 12 октября 2015. Дата обращения: 16 декабря 2016.
- ↑Debian Switching From Glibc To Eglibc - Slashdot. linux.slashdot.org. Дата обращения: 16 декабря 2016. Архивировано 20 декабря 2016 года.
- ↑Debian is switching to EGLIBCАрхивная копия от 7 октября 2011 на Wayback Machine Aurelien’s weblog, May 5th 2009 (англ.)
- ↑Ark Linux switches to eglibcАрхивная копия от 24 февраля 2012 на Wayback Machine Ark Linux weblog, May 13 2009 (англ.)
- ↑Debian is switching (back) to GLIBCАрхивная копия от 29 марта 2016 на Wayback Machine Aurelien’s weblog, June 18th 2014 (англ.)
- ↑Критическая «дыра» в фундаментальной библиотеке позволяет взломать Ubuntu, Fedora и Debian и другие дистрибутивы LinuxАрхивная копия от 2 февраля 2024 на Wayback Machine // CNews, 2 февраля 2024