rust - Rust 的 Cargo 包可以在我的机器上编译代码吗?

标签 rust rust-cargo

我在玩Rust时,遇到了一个cargo项目源代码中的错误,我更改了代码来修复该错误并重新编译了该项目,但它仍然使用旧代码,这让我思考。

Rust 是在我的机器上编译 cargo 包的源代码还是结果来自云端?如果在我的机器上编译,是否只完成一次?结果在哪里?如果它们是在云中编译的,并且二进制文件是静态的,那么如何保持(Rust)版本之间的兼容性?或者每个 Rust 版本都有一个二进制文件吗?

最佳答案

Cargo 仅在本地计算机上编译代码 - 没有内置支持从互联网下载预构建的 Rust 二进制文件。您可以在~/.cargo/registry/src(Linux路径)中找到您所使用的依赖项的源代码。 Cargo 将所有生成的二进制文件放置在项目的 target 目录中;它甚至不重用在本地计算机上编译的依赖项。

但是,通过安装和使用sccache ,您实际上可以在本地项目和云之间共享依赖二进制文件。

对于在本地编辑依赖项的特定情况,您需要使用 Overriding Dependencies 技术在本地修补源代码。在缓存中编辑代码时,Cargo 不会检查更改,因此您不会看到就地补丁的任何更改。

最后,Cargo 在 target/debug/deps 中生成的每个 crate .rlib 文件相当于 C 对象文件 - 它们需要全部链接在一起才能生成有效的可执行文件或库。它们之间的ABI依赖于Rust版本,这就是为什么切换工具链会导致它们全部重新构建。

关于rust - Rust 的 Cargo 包可以在我的机器上编译代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69959768/

相关文章:

compiler-errors - 通过特征和泛型类型来规范化可序列化数据的关联类型

rust - 为什么这个借用仍然是 "active"?

testing - 如何递归测试目录下的所有 crate ?

binding - 尝试绑定(bind)元组变量时为 "expected identifier, found ("

rust - 创建自定义彩色 dbg! Rust 中的宏

string - 将类似 C 的打包数据结构映射到 Rust 结构

rust - 无法访问 Rust 中的环境变量

postgresql - 如何在安装时修复 Rust 柴油 cli 链接 libpq.lib 错误

rust - 如何在 Rust 2018 中惯用地为箱子起别名?

rust - 如何从构建脚本 (build.rs) 访问当前的 cargo profile (build, test, bench, doc, ....)