Rust语言编译动态库和静态库说明
📅 2026/7/30 14:40:40
👁️ 阅读次数
📝 编程学习
只列举部分类型,针对Linux和Windows系统。
crate-type的类型:rlib,staticlib,dylib,cdylib。
提示:
(1)dylib和cdylib不能同时写到Cargo.toml文件的crate-type中。
(2)dylib生成的库默认不适合 C 调用,Rust 项目内部动态加载,并且强烈不建议于 C 调用;而cdylib是为 C 调用专门设计的。
| crate-type | Linux 输出文件 | Windows 输出文件 |
|---|---|---|
| rlib | xxx.rlib | xxx.rlib |
| staticlib | xxx.a | xxx.lib(MSVC) 或 xxx.a (MinGW) |
| dylib | xxx.so | xxx.dll |
| cdylib | xxx.so | xxx.dll |
cargo编译时,在Cargo.toml中可以指定一个或多个类型。
[lib] crate-type = ["rlib"]
[lib] crate-type = ["rlib", "cdylib]
[lib] crate-type = ["rlib", "cdylib", "staticlib"]
rustc编译库时,需要指定参数 --crate-type
rustc--crate-type=rlib lib.rs
rustc--crate-type=rlib lib.rs -o libtest.rlib
编程学习
技术分享
实战经验