板条箱中的“图书馆”到底是什么?

psi*_*c12 2 rust rust-cargo

我对 Rust 中的“库”概念有点困惑,这是在“板条箱是二进制文件或库”中提到的。

如果我是对的,二进制意味着可执行程序(例如,可以从 shell 运行),但什么是库?

它们是某种带有 .a 或 .so 等符号的目标文件吗?它们将链接到我的程序(例如 C/C++)

或者它们是纯源代码,将与我的程序一起编译?

Apl*_*123 6

正如 Masklinn 所描述的,是的,Rust 确实有预构建的库格式。然而,这些大多在内部使用,对于不同的编译器版本来说是很挑剔的,并且Cargo 仍然缺乏对它们的支持。事实上,crates.io 要求库是“开源的”(例如,您提供源代码,您仍然可以从某些闭源依赖项加载源代码),并且它将源代码分发给任何下载者板条箱。然后,源代码与您的程序一起有效编译(这就是 rlib 发挥作用的地方,但 Cargo 不会将其公开给用户)。这也是为什么您能够检查几乎每个板条箱的源代码。