10个不稳定版本 (3个破坏性更新)
使用旧的Rust 2015
| 0.3.1 | 2018年10月27日 |
|---|---|
| 0.3.0 | 2018年10月27日 |
| 0.2.0 | 2018年10月26日 |
| 0.1.3 | 2018年10月26日 |
| 0.0.2 | 2018年10月25日 |
#253 in 性能分析
每月下载量:28
2MB
16K SLoC
intel-seapi
intel-seapi 是Intel单事件API (SEAPI,也称为 IntelSEAPI) 和 ittnotify 的FFI包装器,由Intel VTune使用。ITT代表'仪器和跟踪技术'。 这个特定的包装器使用了一个IntelSEAPI 的分支,因为上游代码库不支持交叉编译或MUSL C库。
它提供了一个静态链接,并为 libittnotify.a/.obj 库生成Rust FFI绑定,并且也编译,但不链接或为 libIntelSEAPI.dylib/.so/.dll 动态库生成Rust绑定(这是因为它始终以动态方式构建,并且它旨在从C++中使用)。
下游crate可以使用生成的构建变量 cargo:include, cargo:libdir 和 cargo:root。
限制
- 目前不适用于Windows,因为
libittnotify为Windows构建了一个完全不同的API集(以A和W结尾)。 - 构建了动态库
IntelSEAPI但未链接,并且未为其生成绑定。 - Bindgen 由于C头文件的函数声明没有反映实际创建的混淆名称,因此没有为
libittnotify的大部分生成正确的绑定。因此,仅提供了一小部分绑定;在BindingsAsGeneratedByBingen.rs中生成了附加绑定但尚未修正。
交叉编译
这是脆弱的,可能会失败,主要是因为底层软件使用了一个混合的构建系统,包括CMake、具有Rust绑定和封装的C++工具链以及IntelSEAPI,并且它们对交叉编译不太友好。我们使用了一个分支版本来修复他们的一些交叉编译错误,例如在CMakeLists.txt文件中的错误,生成与目标或主机架构无关的胖Mac OS X对象归档等。
例如,当为MUSL目标编译时,Rust的cccrate假设C编译器是musl-gcc,而C++编译器是musl-g++。由于这个cccrate是由cmakecrate管理的,所以我们无法轻易更改这一点。这个crate尝试在用MUSL目标进行交叉编译时,如果没有设置环境变量CROSS_COMPILE,则设置它。
已知的可正常工作的交叉编译。
- 在Mac OS X上,如果安装了filo-sottie的foked musl homebrew keg(
lemonrock/musl-cross/musl-cross),则cargo build --target x86_64-unknown-linux-musl。
许可
本项目的许可协议为MIT。