163次发布
使用旧Rust 2015
新版本 0.2.158 | 2024年8月19日 |
---|---|
0.2.155 | 2024年5月17日 |
0.2.153 | 2024年1月31日 |
0.2.151 | 2023年12月10日 |
0.1.4 | 2015年3月28日 |
4 in 操作系统
15,322,840 monthly downloads
在 82,152 个crate中使用 (直接使用6,718)
4MB
110K SLoC
libc - 平台系统库的原始FFI绑定
libc
提供了与Rust支持的每个平台上的C代码(或“类似C”代码)交互所需的所有定义。这包括类型定义(例如 c_int
)、常量(例如 EINVAL
)以及函数头(例如 malloc
)。
该crate在crate根目录下导出所有底层平台类型、函数和常量,因此所有项都可通过 libc::foo
访问。所有导出API的类型和值与为libc编译的平台相匹配。
关于此库设计的更详细信息,请参阅其 相关RFC。
v0.3 路线图
主分支现在是v0.3,其中包含一些重大更改。
对于v0.2,请在 libc-0.2
分支上提交PR。一旦我们在crates.io上发布v0.3,我们将停止制作新的v0.2版本。
有关详细信息,请参阅 跟踪问题。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
libc = "0.2"
功能
-
std
:默认情况下,libc
链接到标准库。禁用此功能可以删除此依赖,并能够在#![no_std]
crates中使用libc
。 -
extra_traits
:在libc
中实现的全部struct
都是Copy
和Clone
。此功能派生自Debug
、Eq
、Hash
和PartialEq
。 -
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 |
常量 内存::size_of |
1.24.0 |
repr(align) |
1.25.0 |
extra_traits |
1.25.0 |
核心::ffi::c_void |
1.30.0 |
repr(packed(N)) |
1.33.0 |
cfg(target_vendor) |
1.33.0 |
const-extern-fn |
1.62.0 |
平台支持
您可以在docs.rs
上查看特定平台(目标)的文档,选择您想要查看的平台。
请参阅ci/build.sh
以查看libc
保证为每个Rust工具链构建的平台。GitHub Actions和Cirrus CI中的测试矩阵显示了libc
测试运行的平台。
许可证
此项目可使用以下任一许可证:
任选其一。
贡献
我们欢迎所有希望贡献的人。请参阅贡献说明以获取更多信息。
对本项目的任何形式(问题、pull请求等)的贡献都必须遵守Rust的行为准则。
除非您明确声明,否则您提交给libc
的任何有意贡献,根据Apache-2.0许可证的定义,都应按上述方式双许可,不附加任何额外条款或条件。