小编Sam*_*ber的帖子

如何使用 Bazel 静态编译 C++ 库以在 Rust 中使用?

我的目标是.a从 MediaPipe 项目中获取Linux 上的静态库,该项目是用 Bazel 构建的。据我所知,这样做没有 bazel 规则。我真的不想与 Bazel 集成 - 我希望它产生我需要的东西,并在其他非 Bazel 管理的东西中使用它。

我正在尝试将使用 Google 构建系统 Bazel 的MediaPipe(https://github.com/google/mediapipe)与一个用 Rust 编写的个人项目集成。我试图弄清楚如何.a从 bazel 构建系统中获取静态库 ( )。我四处搜索,发现有人说他们已经尝试过并做到了,但没有人发布他们所做的事情。

到目前为止,我的尝试是使 bazel 变得冗长(运行-s),然后查看它传递给编译最终二进制文件的命令,以便我可以使用它并修改它以构建一个静态库。我试过解析编译器命令 args 来挑选出所有的目标文件 ( .o) 并ar像这样链接它们ar rcs gpu.a $(grep -E '\.o' bazel-bin/custom/run_gpu-2.params)

该命令有效,但是当我尝试将其链接到 Rust 时,rust 失败了。

这是我的 build.rs

fn main() {
    println!("cargo:rustc-link-search=/home/me/dev/mediapipe");
}
Run Code Online (Sandbox Code Playgroud)

这是我的主要

#[link(name = "gpu")]
extern "C" {
    fn square(val: i32) -> i32;
}

fn main() {
    let r …
Run Code Online (Sandbox Code Playgroud)

c++ linker gcc rust bazel

9
推荐指数
1
解决办法
1410
查看次数

标签 统计

bazel ×1

c++ ×1

gcc ×1

linker ×1

rust ×1