каковы различия в силе и особенностях в gnulib glib и glibc Спасибо!
Glibc, glib и gnulib
Ответ 1
glibc
- это основная библиотека времени выполнения C. Он предоставляет такие вещи, как printf(3)
и fopen(3)
.
glib
- это объектно-ориентированный цикл событий и служебная библиотека, написанная на C.
gnulib
- это библиотека, которая предоставляет адаптер из POSIX API в собственный API.
Все три используются для совершенно разных задач.
Ответ 2
glibc, сокращенная форма библиотеки GNU C, является реализацией проекта GNU стандартной библиотеки C. API стандартной библиотеки C объявлен в знакомых файлах заголовков, таких как <stdio.h>
и <stdlib.h>
(полный список файлов заголовков см. В ссылке на Википедию).
API операционной системы POSIX предоставляется через <unistd.h>
который в основном переносит системные вызовы, такие как операции fork
и операции ввода-вывода, такие как read
/write
.
GLib - это набор системных библиотек, написанных на C и разработанных GNOME (часть проекта GNU). Цитата из Википедии (без источника, к сожалению)
GLib предоставляет расширенные структуры данных, такие как блоки памяти, списки с двойной и однократной связью, хеш-таблицы, динамические строки и утилиты строк, такие как лексический сканер, блоки строк (группы строк), динамические массивы, сбалансированные двоичные деревья, N-арные деревья, кварки (двусторонняя ассоциация строки и уникальный целочисленный идентификатор), списки ключевых данных, отношения и кортежи. Кэши обеспечивают управление памятью.
GLib реализует функции, которые обеспечивают потоки, программирование потоков и связанные с ними средства, такие как примитивный доступ к переменным, мьютексы, асинхронные очереди, защищенные пулы памяти, передача сообщений и ведение журнала, функции перехвата (регистрация обратного вызова) и таймеры. GLib также включает средства передачи сообщений, такие как преобразование порядка байтов и каналы ввода/вывода.
Некоторые другие особенности GLib включают в себя:
- стандартные макросы
- предупреждения и утверждения
- динамическая загрузка модулей
Зачем использовать функции GLib?
Gnulib, также называемая библиотекой переносимости GNU, представляет собой набор кода GNU, помогающий писать переносимый код. Из руководства:
Gnulib предназначен для того, чтобы быть каноническим источником большинства важных "переносимостей" и/или общих файлов для проектов GNU. Это файлы, предназначенные для совместного использования на уровне источника; Gnulib не является типичной библиотекой, предназначенной для установки и связывания. Таким образом, в отличие от большинства проектов, Gnulib обычно не генерирует исходный дистрибутив tarball; вместо этого разработчики получают модули непосредственно из исходного хранилища.
Многие из функций реализуют обходные пути переносимости для функций ISO C и POSIX.