Могу ли я собрать дистрибутив Linux с libc вместо glibc?

Могу ли я собрать дистрибутив Linux с libc вместо glibc?

Недавно я разговаривал с другом, высококвалифицированным инженером-программистом, и он показал мне несколько статей, в которых говорилось о том, что libc намного лучше glibc.

Интересно, можно ли вместо этого использовать libc, и с какими проблемами я столкнусь, если пойду по этому пути?

решение1

Контекст: исходя из вышеизложенных комментариев, можно предположить, что имеется в виду BSDish libc.

Думаю, этот вопрос рассматривался, но libcон, как правило, тесно связан с определенным ядром ( glibcимеет уровень абстракции, что обеспечивает некоторую переносимость, но вызывает обычные проблемы, которые вызывает уровень абстракции), и для того, чтобы заставить BSD libcработать с ядром Linux, потребуется почти полная переработка. Ключевые системные службы сильно различаются в двух системах (пример: BSD libcпредполагает, что нет никаких каналов/FIFO, потому что BSD вместо этого использует пары сокетов; Linux же, наоборот, не поддерживает пары сокетов, совместимые с каналами).

Движение в другом направлении (думаю, в Debian есть экспериментальное пользовательское пространство Linux на ядре FreeBSD) возможно благодаря glibcуровню переносимости.

решение2

Существует множество реализаций libc. Возможно и довольно часто можно построить систему, используяuClibcилиEGLIBC. Это даже не особенно сложно: попробуйтеBuildroot.

решение3

Много программного обеспечения зависит от glibcсебя или glibcмакросов или просто glibcстиля, поэтому сборка не удалась. Вы можете легко исправить любое программное обеспечение, если вы знаете его glibcизнутри. Например, мы можем увидеть здесьзаголовки linuxдля musl. Заголовки еще не закончены, но вы можете проверить коммиты и посмотреть, как выглядит эта работа.

Каждый разработчик тестирует свое ПО, используя glibcбазовую систему. Невозможно исправить всю разработку живого ПО и сделать его совместимым с другим, libcиспользуя правильное решение, например запрос на извлечение. Поэтому системы общего назначения, такие как, gentooне могут быть построены с использованием альтернативной libc без бесконечной боли.

Разработчики встроенных систем ( openwrtнапример, из) исправляют версии программного обеспечения и делают тяжелую работу вокруг этого. Так что встроенная система (например openwrt, ) может предоставить толькоисточниккоторый можно собрать с помощью альтернативной библиотеки libc, например muslили uclibc.

Единственный безболезненный и правильный способ замены glibcна other libc— реализовать специальную обертку, которая имитирует все glibcповедения с использованием other libc. На сегодняшний день такого проекта нет.

Связанный контент