
Недавно я разговаривал с другом, высококвалифицированным инженером-программистом, и он показал мне несколько статей, в которых говорилось о том, что libc намного лучше glibc.
Интересно, можно ли вместо этого использовать libc, и с какими проблемами я столкнусь, если пойду по этому пути?
решение1
Контекст: исходя из вышеизложенных комментариев, можно предположить, что имеется в виду BSDish libc
.
Думаю, этот вопрос рассматривался, но libc
он, как правило, тесно связан с определенным ядром ( glibc
имеет уровень абстракции, что обеспечивает некоторую переносимость, но вызывает обычные проблемы, которые вызывает уровень абстракции), и для того, чтобы заставить BSD libc
работать с ядром Linux, потребуется почти полная переработка. Ключевые системные службы сильно различаются в двух системах (пример: BSD libc
предполагает, что нет никаких каналов/FIFO, потому что BSD вместо этого использует пары сокетов; Linux же, наоборот, не поддерживает пары сокетов, совместимые с каналами).
Движение в другом направлении (думаю, в Debian есть экспериментальное пользовательское пространство Linux на ядре FreeBSD) возможно благодаря glibc
уровню переносимости.
решение2
решение3
Много программного обеспечения зависит от glibc
себя или glibc
макросов или просто glibc
стиля, поэтому сборка не удалась. Вы можете легко исправить любое программное обеспечение, если вы знаете его glibc
изнутри. Например, мы можем увидеть здесьзаголовки linuxдля musl
. Заголовки еще не закончены, но вы можете проверить коммиты и посмотреть, как выглядит эта работа.
Каждый разработчик тестирует свое ПО, используя glibc
базовую систему. Невозможно исправить всю разработку живого ПО и сделать его совместимым с другим, libc
используя правильное решение, например запрос на извлечение. Поэтому системы общего назначения, такие как, gentoo
не могут быть построены с использованием альтернативной libc без бесконечной боли.
Разработчики встроенных систем ( openwrt
например, из) исправляют версии программного обеспечения и делают тяжелую работу вокруг этого. Так что встроенная система (например openwrt
, ) может предоставить толькоисточниккоторый можно собрать с помощью альтернативной библиотеки libc, например musl
или uclibc
.
Единственный безболезненный и правильный способ замены glibc
на other libc
— реализовать специальную обертку, которая имитирует все glibc
поведения с использованием other libc
. На сегодняшний день такого проекта нет.