我可以使用 libc 而不是 glibc 构建 Linux 发行版吗

我可以使用 libc 而不是 glibc 构建 Linux 发行版吗

我最近与一位技能高超的软件工程师朋友进行了交谈,他向我展示了一些文章,概述了 libc 比 glibc 好得多的事实。

我想知道是否可以使用libc来代替,如果我走这条路,我会遇到什么样的问题?

答案1

上下文:假设从上面的评论来看,BSDishlibc是指 BSDish。

我认为它已经被研究过,但libc往往与给定的内核紧密相关(glibc有一个抽象层,这允许它具有一定的可移植性,但会导致抽象层引起的常见问题)并且使 BSDlibc与 Linux 内核一起工作需要接近完全重写。两个系统之间的关键系统服务有很大不同(例如:BSDlibc假设没有管道/FIFO,因为 BSD 使用套接字对;相反,Linux 不支持管道兼容的套接字对)。

由于 的可移植层,走向另一个方向(我认为 Debian 在 FreeBSD 内核上有一个实验性的 Linux 用户空间)是可能的glibc

答案2

libc 有很多实现。使用以下方式构建系统是可能的并且很常见uClibc或者EGLIBC。这甚至不是特别困难:尝试一下构建根

答案3

许多软件依赖于其glibc自身或glibc宏或仅依赖于glibc样式,因此构建失败。如果您了解glibc内部情况,您可以轻松修复任何软件。例如我们可以在这里看到Linux 头文件为了musl。标头尚未完成,但您可以检查提交并查看这项工作的样子。

glibc每个开发人员都使用基础系统来测试其软件。不可能修复所有实时软件开发并使其与其他libc使用正确的解决方案(例如拉取请求)兼容。因此,像这样的通用系统gentoo不能使用替代的 libc 来构建,而不会带来无限的痛苦。

嵌入式开发人员(例如openwrt)正在修复软件版本并围绕它进行大量工作。所以嵌入式系统(如openwrt)只能提供来源可以使用替代 libc 来构建,例如musluclibc

替换glibc为 other 的唯一无痛且正确的方法libc是实现glibc使用 other 模拟所有行为的特殊包装器libc。今天还没有这样的项目。

相关内容