Pkg-Config

1

build.rs、link 和 pkg-config

4 分钟

写 FFI 时,声明 C 函数只是第一步:

unsafe extern "C" {
    fn sensor_read(out: *mut u8, len: usize) -> i32;
}

这只告诉 Rust:有一个 C ABI 函数叫 sensor_read。

但链接器还要知道:

这个函数在哪个库里?
库文件在哪个目录?
还需要链接哪些依赖库?
交叉编译时用的是目标系统的库,还是宿主机的库?

C 项目里这些通常由 Makefile、CMake、pkg-config、sysroot 和交叉工具链处理。Rust 项目里,对应工具是 #[link]、build.rs 和 build dependency。

阅读更多