6个版本 (2个稳定版)
1.0.1+v1.0.0 | 2022年8月25日 |
---|---|
0.8.0+v0.8.0 | 2022年5月21日 |
0.7.2+v0.7.0 | 2022年5月21日 |
0.7.1+v0.7.0 | 2022年4月21日 |
0.7.0+v0.7.0 | 2022年4月21日 |
#976 在 Unix APIs
每月24次下载
用于 bpf-rs
1MB
30K SLoC
包含 (ZIP文件, 2KB) bpf-object-fuzzer_seed_corpus.zip
bpfdeploy-libbpf-sys
警告:这是libbpf-sys的一个分支。理想情况下,我们打算将这里的多数更改上传到主分支,但在那之前,这个分支将维护用于bpfdeploy.io crate。
Rust对Linux内核中libbpf的绑定
维护者:Alex Forster <[email protected]>
许可: BSD-2-Clause
libbpf-sys是使用bindgen自动从Linux内核生成Rust FFI绑定到libbpf的结果。
警告:这个crate不提供对libbpf的“高级”或“安全”API包装器。如果您正在寻找更简单的方式来使用libbpf,请查看这些其他crate,它们使用libbpf-sys实现了更高层次的API...
- afxdp:AF_XDP的Rust接口 – GitHub | Crates.io
- libbpf-cargo:用于构建bpf程序的Cargo插件 – GitHub | Crates.io
- libbpf-rs:libbpf-sys的一个安全、惯用且具有观点的包装器 – GitHub | Crates.io
- rebpf:在Rust中编写和加载eBPF程序 – GitHub | Crates.io
- xsk-rs:Linux AF_XDP套接字的Rust接口 – Github | Crates.io
鼓励社区使用 libbpf-sys 构建更高层次的crate。如果您做到了,请告诉我!
构建
在 cargo build
过程中,会编译一个包含的 libbpf 复制并将其静态链接到生成的二进制文件中。这意味着,为了构建依赖于这个crate的项目,您的系统必须提供工作的C编译器工具链(GCC和Clang都应工作)。此外,您的系统必须提供 zlib 和 libelf 的开发头文件,并且它们必须可以通过 pkgconfig 被发现。
分发
当您将此crate作为依赖项添加到您的项目中时,您的生成的二进制文件将动态链接到 libz
和 libelf
。这意味着运行您的二进制文件的系统必须安装这些库。
版本
由于此crate的API是自动从 libbpf 源文件生成的,因此它使用基于它提供的 libbpf 版本的版本控制方案。
“主.次”的semver数字与每个发布提供的 libbpf 版本完全对应。例如,此crate的 0.6.x
发布提供了 libbpf v0.6.x 发布的API。
为了允许人为错误,此crate使用“修补”semver数字,并且不一定与提供的 libbpf 版本匹配。例如,此crate的 0.6.1
和 0.6.2
发布都包含对 libbpf v0.6.1 的绑定,但后者发布包含对crate本身的错误修复和/或增强。
任何给定发布提供的 libbpf 的确切版本可以在版本字符串中找到的“构建元数据”semver部分中,该部分位于代码 +
之后。例如,0.6.2+v0.6.1
指示crate版本为 0.6.2
,上游 libbpf 版本为 v0.6.1
。
许可和依赖项
此crate在BSD 2-Clause许可下发布,并小心避免将病毒许可证传播给用户。
它目前依赖于以下第三方库
网站 | 许可证 | 链接 | |
---|---|---|---|
libbpf | github.com/libbpf/libbpf | LGPL-2.1-仅限或 BSD-2-条款 |
静态 |
libelf | sourceware.org/elfutils | LGPL-2.1-或-以后或 LGPL-3.0-或-以后 |
动态 |
zlib | zlib.net | Zlib |
动态 |