Rust crate概念中的library(库)具体指什么?
Rust 中 library crate 的具体含义
Rust 语境下的 library crate 两种存在形式都支持,默认以源代码形式分发和使用,和C/C++的常规库使用逻辑有一定区别:
- 绝大多数场景下,你通过
cargo引入的第三方 library crate 都是纯源代码形式,会和你自己写的代码共用相同的编译配置(优化等级、目标平台、特性开关等)统一编译,最终链接到你生成的二进制程序里。这是Rust生态的主流用法,原因是Rust目前没有稳定的跨编译器版本ABI,预编译的二进制库很容易出现兼容问题,源码编译可以完全规避这类问题。 - Rust也支持编译输出预编译的二进制格式库,和C/C++的
.a/.so这类文件对应,常见的输出类型包括:.rlib:Rust专用静态库格式,包含编译后的目标码和Rust元数据,仅能给同版本编译器的Rust项目链接使用staticlib:输出标准C兼容的静态库(后缀为.a),可以直接给C/C++项目链接使用cdylib:输出标准C兼容的动态库(对应Linux的.so、Windows的.dll、macOS的.dylib),对外暴露C风格的ABI,可以被任意支持C动态库调用的语言使用dylib:Rust专用动态库格式,ABI不稳定,仅适用于同版本编译器编译的Rust项目动态链接,生态中很少使用
内容的提问来源于stack exchange,提问作者psionic12
相关产品推荐
相关产品推荐

