Что такое ГЛИБК? Для чего это используется?

Я искал исходный код стандартных библиотек C. Я имею в виду, например, как написаны cos, abs, printf, scanf, fopen и все остальные стандартные функции C, я имею в виду их исходный код.

Итак, в поисках этого я наткнулся на GLIBC, но я не знаю, что это такое на самом деле. Это библиотека GNU C, и она содержит некоторые исходные коды, но что они собой представляют на самом деле, являются ли они исходным кодом стандартных функций или чем-то другим? И для чего он используется?


person Community    schedule 12.07.2012    source источник
comment
Библиотека GNU C — это, как говорится в вики, реализация GNU стандартной библиотеки C ( с дополнительным материалом, относящимся к реализации GNU).   -  person wkl    schedule 13.07.2012


Ответы (5)


Это реализация Стандартной библиотеки C, описанной в стандартах C, плюс несколько дополнительных полезных вещей, которые не являются строго стандартными, но часто используются.

Его основное содержание:

1) Библиотека C, описанная в стандартах ANSI,c99,c11. Он включает в себя макросы, символы, реализации функций и т. д. (printf(), malloc() и т. д.)

2) Стандартная библиотека POSIX. «Пользовательский» клей системных вызовов. (open(), read() и т. д. На самом деле glibc не «реализует» системные вызовы. Это делает ядро. Но glibc предоставляет пользовательский интерфейс для служб, предоставляемых ядром, так что пользовательское приложение может использовать системный вызов, как обычный функция.

3) Также немного нестандартных, но полезных вещей.

"используй силу, читай источник"

$git clone git://sourceware.org/git/glibc.git

(Недавно я был довольно просвещен, когда просматривал malloc.c в glibc)

person Aftnix    schedule 12.07.2012
comment
Есть ли что-нибудь еще, что предоставляет glibc, предоставляющий пользовательский интерфейс для служб, предоставляемых ядром? C - единственный язык, который предоставляет такой API? - person Marat Mkhitaryan; 09.01.2020

Существует несколько реализаций стандарта. Glibc — это реализация, которую использует большинство Linux, но есть и другие. Glibc также содержит (как заявляет Aftnix) связующие функции, которые настраивают сцену для переходов в ядро ​​(также известные как системные вызовы). Так много «функций» glibc не выполняют реальной работы, а только делегируют функции ядру.

Чтобы прочитать исходный код Glibc, просто погуглите его. Есть множество сайтов, которые несут его, а также несколько вариантов.

Windows использует собственную реализацию Microsoft, которая, как мне кажется, называется MSVCR.DLL. Я сомневаюсь, что вы где-нибудь найдете исходный код этой библиотеки. Также обратите внимание, что некоторые функции, которые хакер Linux может считать «стандартными», просто не существуют в Windows (в частности, fork). Обратное также верно.

Другие системы будут иметь свою собственную libc.

person jforberg    schedule 12.07.2012
comment
Microsoft поставляет исходный код среды выполнения C вместе с Visual Studio (даже с бесплатной версией Express, я полагаю). Однако по какой-то причине он не включает исходный код подпрограмм с плавающей запятой (или, по крайней мере, значительную их часть). Может быть, они лицензированы третьей стороной, которая не разрешает распространение исходного кода? Я был бы удивлен, если бы MS считала их более важной частью IP, чем другие части среды выполнения. - person Michael Burr; 13.07.2012

Пакет glibc содержит стандартные библиотеки, которые используются несколькими программами в системе. Для экономии места на диске и памяти, а также для облегчения обновления, общий системный код хранится в одном месте и распределяется между программами. Этот конкретный пакет содержит наиболее важные наборы разделяемых библиотек: стандартную библиотеку C и стандартную математическую библиотеку. Без этих двух библиотек система Linux не будет работать. Пакет glibc также содержит поддержку национальных языков (локалей).

person Sandy    schedule 23.12.2012

Да, это реализация функций стандартной библиотеки.

Точнее, это реализация для всех систем GNU и почти для всех систем *NIX, использующих ядро ​​Linux.

person Community    schedule 12.07.2012

Вот несколько точек зрения «из практики»:

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 03.11.2018