近期,RISC-V SIG 在歐拉嵌入式操作系統上成功實現了 musl libc 的適配,完成了使用 musl libc 庫替換 glibc 庫構建鏡像的工作。目前,以 musl libc 為基礎庫編譯的鏡像已在 Raspberry Pi4 開發板上可用,這一成果推動了 openEuler Embedded 的多態發展。
編譯鏡像步驟說明:
https://openeuler.gitee.io/yocto-meta-openeuler/master/features/muslc.html
Musl libc 庫對比 glibc 庫的部分優點
它是一個專門為嵌入式系統開發的輕量級 libc 庫,以簡單、輕量和高效為特色;
musl libc 要小得多,因為 musl libc 專注于盡可能減少代碼大小和函數調用開銷,以提高性能;
musl libc 庫的源碼相對簡單,封裝性不強,不像 glibc 的代碼一樣臃腫,復雜;
musl libc 是 C 語言的一種標準函數庫,代碼干凈且高效,針對靜態連接(static linking)設計,適合被用來制作可攜的程序,且也很容易進行交叉編譯(cross compile),編譯出運行在不同系統環境的程序。
Musl libc 庫對比 glibc 庫的部分缺點
POSIX 標準:musl libc 更加嚴格地遵循 POSIX 標準,而 glibc 則添加了一些擴展,以提供更多的功能和兼容性。
錯誤處理:musl libc 實現的錯誤處理更嚴格和更規范,而 glibc 則有更多的錯誤處理選項,并且支持不同的語言環境。
綜上所述,如果你需要一個小巧且速度較快的 C 標準庫在 Linux 系統上使用,則可以考慮使用 musl libc;如果你要開發的某個功能的可執行程序需要在不同系統環境下運行,則 musl libc 可滿足你的需求;如果你想一次編譯出可以在相同 CPU 架構的 Linux 發行版上都運行的程序,musl libc 庫將是最優的選擇,因為基于 glibc 庫已編譯好的函數庫和運行檔在不同的 Linux 上可能會出現無法共用的情況,。
Raspberry Pi 4:musl libc 與 glibc 性能等方面對比
Libc-bench 是 musl 官方提供的測試集,用于時間和內存效率的測試,該測試集中比較了各種 C/POSIX 標準庫函數的實現。
UnixBench 是一款開源的測試 unix 系統基本性能的工具,測試系統各個方面的性能,然后將各測試結果和一個基準值進行比較,得到一個索引值,所有測試項目的索引值結合在一起形成一個測試分數值。這個測試分數越高代表此系統性能越好。
為了對比以 musl libc 與 glibc 為標準庫的鏡像在性能等方面差異,本次測試我們使用 libc-bench、Unixbench 工具對基于 musl libc 和 glibc 編譯的樹莓派鏡像進行了測試,測試結果如下:
Libc-bench 進行內存占用率測試結果如下:
從上述測試輸出結果可以得出以下結論:以 musl libc 為標準庫編譯的鏡像在虛擬內存占用、物理內存占用、系統可回收內存方面都是遠優于 glibc;
基于 musl libc 庫的樹莓派系統性能測試數據如下:
基 glibc 庫的樹莓派系統性能測試數據如下:
綜上,基于 glibc 的樹莓派系統跑分結果為 146.5 ,基于 musl libc 的樹莓派系統跑分結果為 161.6 ;所以基于 musl libc 編譯的樹莓派鏡像在性能上有大于 10%的提升;
進一步挖掘 musl libc 與 openEler Embedded 系統結合在性能和功能方面的潛力
當然,目前基于 musl libc 庫編譯的鏡像在性能和功能方面還是有很大的提升空間。在性能方面,musl 庫中 malloc 系列函數和 memcpy 系列函數實現較慢。尤其是 malloc 的性能,在多線程環境下會顯著造成瓶頸,原因在于 musl libc 的 malloc 實現在每次 malloc 時都需要對全局變量加鎖解鎖, 導致嚴重的競爭現象,后續也需要在類似這方面上進行優化以便提高性能等;
在功能方面,musl libc 在字符集/編碼方面的支持沒有 glibc 全面;在錯誤處理方面,glibc 有更多的錯誤處理選項,并且支持不同的語言環境;POSIX 標準方面,glibc 添加了一些擴展,以提供更多的功能和兼容性等等,musl libc 庫在不影響性能等前提下,在這上述能方面進行功能上的填充還是有很大的發掘空間的。
-
嵌入式
+關注
關注
5141文章
19532瀏覽量
314980 -
操作系統
+關注
關注
37文章
7089瀏覽量
124952 -
編碼
+關注
關注
6文章
967瀏覽量
55495 -
RISC-V
+關注
關注
46文章
2484瀏覽量
48271
原文標題:Musl libc 庫成功適配到 openEuler Embedded,推動歐拉嵌入式生態發展
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于RISC-V內核的嵌入式系統在機器人關節控制中的應用研究
關于RISC-V芯片的應用學習總結
國產適配!積鼎科技CFD通過華為鯤鵬處理器及歐拉操作系統適配認證

如何使用 RISC-V 進行嵌入式開發
RK3588J成功適配“歐拉”系統!助力能源電力國產OS!
開啟全新AI時代 智能嵌入式系統快速發展——“第六屆國產嵌入式操作系統技術與產業發展論壇”圓滿結束
RT-Thread Safety AUTO成功適配芯來RISC-V車規內核

RT-Thread出席第六屆中國嵌入式技術大會,共話嵌入式操作系統與智能工業

RISC-V在中國的發展機遇有哪些場景?
為什么要有RISC-V
OERV-RTOS: UniProton 適配 Milk-V Duo,加速歐拉 RISC-V 生態

評論