【问题标题】:Do Rust's Cargo packages compile code on my machine?Rust 的 Cargo 包会在我的机器上编译代码吗?
【发布时间】:2021-11-15 01:38:37
【问题描述】:

当我在货物项目源代码中遇到错误时,我正在使用 Rust,我更改了代码以修复错误并重新编译了项目,但它仍然使用让我思考的旧代码。

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

【问题讨论】:

  • Cargo 不会在云中编译,而只能在您的计算机中编译。您似乎想在 Cargo.toml 中指定在哪里可以找到依赖项的来源(请参阅@mkayaalp 提供的链接)。

标签: rust rust-cargo


【解决方案1】:

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

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

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

最后,Cargo 在target/debug/deps 中生成的每箱.rlib 文件等价于C 目标文件——它们需要全部链接在一起以生成有效的可执行文件或库。它们之间的 ABI 依赖于 Rust 版本,这就是为什么切换工具链会导致它们全部被重建。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 2015-09-10
    • 2022-11-10
    • 1970-01-01
    • 2019-04-29
    • 2020-01-15
    • 2021-09-06
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多