Open eepson123tw opened 1 month ago
What is Sccache
sccache 是一个编译缓存工具,特别用于加速像 Rust 和 C/C++ 这样的编程语言的编译过程。它的工作原理是通过缓存之前编译过的对象文件,在后续编译过程中重用这些缓存,从而减少重复编译时间。这对于大型项目非常有帮助,可以显著加快构建时间,特别是在进行频繁的增量构建时。
以下是 sccache 的一些关键功能:
1. 分布式缓存:sccache 不仅支持在本地机器上缓存编译结果,还可以设置为分布式缓存,这意味着多个开发人员可以共享同一个缓存服务器,进一步减少构建时间。
2. 支持的编译器:
• Rust:sccache 对 Rust 语言有着一流的支持,这也是它的一个主要用途。
• C/C++:它同样支持基于 gcc、clang 等编译器的 C 和 C++ 项目。
3. 构建系统集成:sccache 可以集成到各种构建系统中,比如 Cargo(Rust 的包管理和构建工具)以及其他构建系统,比如 CMake 和 Make。
4. 工作方式:
• sccache 通过拦截编译命令,将源文件、编译标志和环境信息哈希成一个唯一的键。每次构建时,它会检查这个键是否已经存在于缓存中。
• 如果存在,它直接返回已经缓存的对象文件,而无需重新编译。
• 如果不存在,则正常编译源文件,并将结果缓存以备后用。
总结来说,sccache 的主要目的是减少构建时间,通过缓存和重用编译结果,特别适用于那些需要频繁编译和构建的大型项目。
For record build error in arm64 architecuture
https://stackoverflow.com/questions/73253352/docker-exec-bin-sh-exec-format-error-on-arm64
这张图片显示了不同版本的 sccache 可用二进制文件,其中的主要差异如下:
你需要选择的文件取决于目标系统的架构和操作系统。例如,如果你是在 linux/arm64 环境中运行,你应该选择适合 ARM 架构的 aarch64 版本,例如:
sccache-v0.8.2-aarch64-unknown-linux-musl.tar.gz
如果你运行的是 x86_64 架构的 Linux 系统,应该选择相应的 x86_64 版本。