
最近,我與一位技能高超的軟體工程師朋友進行了交談,他向我展示了一些文章,概述了 libc 比 glibc 好得多的事實。
我想知道是否可以用libc來代替,如果我走這條路,我會遇到什麼樣的問題?
答案1
上下文:假設從上面的評論來看,BSDishlibc
是指 BSDish。
我認為它已經被研究過,但libc
往往與給定的內核緊密相關(glibc
有一個抽象層,這允許它具有一定的可移植性,但會導致抽象層引起的常見問題)並且使 BSDlibc
與Linux 內核一起工作需要接近完全重寫。兩個系統之間的關鍵系統服務有很大不同(例如:BSDlibc
假設沒有管道/FIFO,因為 BSD 使用套接字對;相反,Linux 不支援管道相容的套接字對)。
由於 的可移植層,走向另一個方向(我認為 Debian 在 FreeBSD 核心上有一個實驗性的 Linux 用戶空間)是可能的glibc
。
答案2
答案3
許多軟體依賴其glibc
自身或glibc
巨集或僅依賴glibc
樣式,因此建置失敗。如果您了解glibc
內部情況,您可以輕鬆修復任何軟體。例如我們可以在這裡看到Linux 頭檔為了musl
。標頭尚未完成,但您可以檢查提交並查看這項工作的樣子。
glibc
每個開發人員都使用基礎系統來測試其軟體。不可能修復所有即時軟體開發並使其與其他libc
使用正確的解決方案(例如拉取請求)相容。因此,像這樣的通用系統gentoo
不能使用替代的 libc 來構建,而不會帶來無限的痛苦。
嵌入式開發人員(例如openwrt
)正在修復軟體版本並圍繞它進行大量工作。所以嵌入式系統(如openwrt
)只能提供來源可以使用替代 libc 來構建,例如musl
或uclibc
。
替換glibc
為 other 的唯一無痛且正確的方法libc
是實現glibc
使用 other 模擬所有行為的特殊包裝器libc
。今天還沒有這樣的項目。