標準 C 庫 PicoLibc 1.1 可用

Keith Packard,活躍的 Debian 開發人員、X.Org 專案的領導者以及許多 X 擴充的創建者,包括 XRender、XComposite 和 XRandR, 引進 發布新的標準 C 庫 PicoLibc 1.1,開發用於永久儲存和 RAM 有限的嵌入式設備。 開發時從庫借用了部分程式碼 新庫 來自 Cygwin 專案和 AVR 庫,專為 Atmel AVR 微控制器開發。 PicoLibc代碼 分發者 在 BSD 許可下。 ARM(32 位元)、i386、RISC-V、x86_64 和 PowerPC 架構支援庫彙編。

Keith Packard 在無法找到可用於 RAM 較少的嵌入式裝置上的合適 Libc 選項後開始開發。該項目自去年以來一直在開發。在第一階段,該專案是newlib的變體,其中stdio的功能被avrlibc的精簡版本所取代(newlib中的stdio不適合其高資源消耗)。由於Keith 目前的工作涉及RISC-V 架構的持續工作以及嵌入式設備工具的開發,因此他最近回顧了libc 實現的狀態,並得出結論認為,通過稍加調整,newlib 和avrlibc 的組合可能是一個很好的通用目的解決方案。最初,該專案以「newlib-nano」的名稱開發,但為了避免與 Newlib 庫混淆,它被重新命名為 PicoLibc。

在目前的形式中,Picolibc 已經完成了刪除 BSD 授權下未提供的所有程式碼的工作(在建置嵌入式裝置時未使用該程式碼),這大大簡化了專案授權的情況。本機流的實作已從“struct _reent”轉移到 TLS 機制(線程本地存儲)。 stdio 的緊湊版本借用了 avrlibc 庫程式碼,預設為啟動狀態(ATmel 特定的彙編器插入是用 C 重寫的)。 Meson 工具包用於組裝,這使得可以不依賴 newlib 組裝腳本並簡化 newlib 中更改的傳輸。新增了初始化程式碼 (crt0) 的簡化版本,附加到可執行檔並在控制權轉移到 main() 函數之前執行。

在 Picolibc 版本 1.1 中:

  • 添加了輔助庫以支持該技術”半主機「允許在偵錯器或模擬器環境中運行的程式碼使用主機系統的 I/O 機制;
  • 對於支援 open、close、read 和 write 系統調用的系統,tinystdio 新增了標準化的 POSIX stdio I/O 接口,包括 fopen 和 fdopen 函數,以及將 stdin/stdout/stderr 綁定到 POSIX 定義的檔案描述符;
  • newlib 程式碼庫的最新變更已延續。包括新增的 libm 存根 芬芙.h,可以在不支援浮點的系統上使用;
  • 新增了針對 ARM 和 RISC-V 系統使用 picolibc 建立「Hello world」應用程式的範例;
  • 刪除了 newlib、libm 和 mathfp 目錄,其中包含未使用的實驗程式碼。

來源: opennet.ru

添加評論