便携式 C 标准库
mlibc 是一款功能齐全的 C 标准库,旨在考虑可移植性。我们支持多种架构 (x86-64、AArch64、RISC-V、IA-32、m68k、LoongArch64),并为新的操作系统提供了一个干净的系统调用抽象层,供其插入使用。与其他可移植的 C 标准库 (如 newlib) 不同,我们的目标是实现与 glibc/musl 的功能对等性,即提供全面的 pthread 支持和 GNU 扩展。mlibc 具有足够的能力来运行各种软件,包括 Xorg、多个 Wayland 合成器、Mesa 和 WebKitGTK 等 Web 浏览器,尽管仍有一些功能尚未实现。
单个操作系统可以根据需要选择使用或不使用某些功能;例如,像 pthread 这样的 POSIX API 会受到 POSIX option 的限制,像 epoll 这样的 Linux API 会受到 Linux option 的限制等等。
| 目录 | 目的 |
|---|---|
options/ |
(大致上) 独立于操作系统的头文件和代码。options/ 分为可通过端口启用或禁用的子目录。 |
sysdeps/ |
具体于操作系统的头文件和代码。sysdeps/ 分为每个端口的子目录。在每次构建中,只启用其中一个子目录。 |
abis/ |
具体于操作系统的接口头文件("接口头文件")。这些头文件中包含操作系统接口的常量和结构体。例如,SEEK_SET 或 O_CREAT 的数值就存放在这里,以及像 struct stat 这样的结构体。接口头文件只允许包含常量、结构体和联合体,但不允许包含函数声明或逻辑代码。abis/ 分为每个操作系统的子目录,但这种划分仅用于组织目的。端口仍然可以混合来自不同 abis/ 子目录的头文件。 |
暂无开放 Issues,或尚未同步最近议题。