我可以使用 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。今天還沒有這樣的項目。

相關內容