#libc #bindings #operating #operating-system #system #ffi

sys no-std libc-wasix

对 WASIX 平台库(如 libc)的原始 FFI 绑定

1 个不稳定版本

使用旧 Rust 2015

0.2.147 2023年8月28日

#373 in 操作系统

MIT/Apache

4MB
102K SLoC

libc - 平台的系统库的原始 FFI 绑定

GHA Status Cirrus CI Status Latest Version Documentation License

libc 提供了与 C 代码(或 "C-like" 代码)在 Rust 支持的所有平台上轻松交互所需的全部定义。这包括类型定义(例如 c_int)、常量(例如 EINVAL)以及函数头(例如 malloc)。

该软件包在软件包根目录下导出所有底层平台类型、函数和常量,因此所有项都可通过 libc::foo 访问。所有导出 API 的类型和值都与为 libc 编译的平台相匹配。

有关此库设计的更详细信息,可以在其 相关 RFC 中找到。

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
libc = "0.2"

特性

  • std:默认情况下,libc 与标准库链接。禁用此特性可删除此依赖项,并能够在 #![no_std] 软件包中使用 libc

  • extra_traits:在 libc 中实现的全部 struct 都实现了 CopyClone。此特性推导出 DebugEqHashPartialEq

  • const-extern-fn:将一些 extern fn 转换为 const extern fn。如果您使用 Rust >= 1.62,则此特性默认启用。否则,需要 nightly rustc。

  • 已弃用use_std 已弃用,与 std 等效。

Rust 版本支持

目前最低支持的 Rust 工具链版本为 Rust 1.13.0。 (libc 目前没有关于最低支持的 Rust 版本更改的政策;此类政策尚在制定中。)需要较新 Rust 功能的 API 仅在较新的 Rust 工具链上可用

特性 版本
联合体 1.19.0
常量 内存::大小 1.24.0
表示(对齐) 1.25.0
额外特性 1.25.0
核心::ffi::c_void 1.30.0
表示(打包(N)) 1.33.0
cfg(目标供应商) 1.33.0
const-extern-fn 1.62.0

平台支持

特定平台的文档(HEAD).

有关 ci/build.sh 的平台,请参阅GitHub ActionsCirrus CI 上的测试矩阵。这些平台保证了为每个 Rust 工具链构建 libc

许可证

本项目受以下任一许可证的许可:

任选其一。

贡献

我们欢迎所有想贡献力量的人。有关更多信息,请参阅贡献说明

对本项目的任何形式(问题、拉取请求等)的贡献必须遵守 Rust 的行为准则

除非你明确表示,否则任何有意提交以包含在 libc 中的贡献,如 Apache-2.0 许可证所定义,将按上述方式双许可,不附加任何额外的条款或条件。

依赖项