Rust 的 Cargo 软件包在我的机器上编译代码吗?



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

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

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

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

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

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

最新更新