1个稳定版本
新 1.4.3+v1.4.5 | 2024年8月14日 |
---|
#417 in Unix API
93 每月下载量
7.5MB
176K SLoC
包含 (晦涩的autoconf代码,38KB) elfutils/configure.ac,(ar库,4KB) hithere-dbgsym_1.0-1_amd64.ddeb,(Debian软件包,4KB) hithere_1.0-1_amd64.deb
libbpf-sys-cross: libbpf-sys的交叉编译友好分支
这个crate可能是临时的。最终我希望将所有更改都回传到libbpf-sys。
libbpf-sys
Rust对Linux内核中的libbpf的绑定
维护者: Alex Forster <[email protected]>
许可证: BSD-2-Clause
libbpf-sys 是使用 bindgen 从Linux内核自动生成Rust FFI绑定到 libbpf 的打包结果。
警告: 此crate不提供围绕 libbpf 的高级别或“安全”API包装器。如果您正在寻找更容易使用 libbpf 的方法,请查看这些使用 libbpf-sys 实现更高级别API的crate...
- 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 查找。
在全新的 Debian/Ubuntu 安装上构建
$ apt-get install git rustc cargo build-essential pkgconf zlib1g-dev libelf-dev
$ git clone --recurse-submodules https://github.com/libbpf/libbpf-sys.git && cd libbpf-sys
$ cargo build
在全新的 RHEL/Fedora 安装上构建
$ yum install git rust cargo gcc make pkgconf zlib-devel elfutils-libelf-devel
$ git clone --recurse-submodules https://github.com/libbpf/libbpf-sys.git && cd libbpf-sys
$ cargo build
环境变量
LIBBPF_SYS_EXTRA_CFLAGS
可用于在 vendoring libbpf、libz 或 libelf 时传递额外的 cflags。LIBBPF_SYS_LIBRARY_PATH
:用于链接器查找原生库的分号分隔路径。
分发
当您将此 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 |
动态 |