eepson123tw / public-notes

some notes about the develop issue and can quickly review
0 stars 0 forks source link

What is differ between x86_64 and aarch64 different #24

Open eepson123tw opened 1 month ago

eepson123tw commented 1 month ago

image这张图片显示了不同版本的 sccache 可用二进制文件,其中的主要差异如下:

1.  平台和架构差异:
•   x86_64 和 aarch64:x86_64 代表 64 位的 x86 架构(通常在大多数桌面电脑和服务器上使用),而 aarch64 则是 64 位的 ARM 架构(常用于移动设备和一些服务器)。
•   i686:32 位的 x86 架构(老旧系统上可能使用)。
•   armv7:这是 ARM 架构的 32 位版本,通常用于旧的 ARM 设备。
2.  操作系统差异:
•   linux-musl:这些文件是为基于 musl 的 Linux 系统编译的,musl 是一种 C 标准库,通常用于轻量级 Linux 发行版,如 Alpine。
•   apple-darwin:这是为 macOS 系统编译的文件。
•   pc-windows-msvc:这是为 Windows 平台上使用 MSVC 编译器的版本。
3.  文件类型差异:
•   .tar.gz:这是一个压缩的 tarball 文件,用于 Unix/Linux 系统中常见的压缩格式。
•   .zip:这是 Windows 中常见的压缩文件格式。

你需要选择的文件取决于目标系统的架构和操作系统。例如,如果你是在 linux/arm64 环境中运行,你应该选择适合 ARM 架构的 aarch64 版本,例如:

sccache-v0.8.2-aarch64-unknown-linux-musl.tar.gz

如果你运行的是 x86_64 架构的 Linux 系统,应该选择相应的 x86_64 版本。

eepson123tw commented 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 的主要目的是减少构建时间,通过缓存和重用编译结果,特别适用于那些需要频繁编译和构建的大型项目。

eepson123tw commented 1 month ago

For record build error in arm64 architecuture

https://stackoverflow.com/questions/73253352/docker-exec-bin-sh-exec-format-error-on-arm64