在运行 Debian 的 AWS t4g.micro 实例上的 M1 Mac 上运行argon2 compile 会抛出以下错误。
根据https://stackoverflow.com/a/47274698/4579271,arm64
并aarch64
参考相同的架构。
$ ./argon2 -h
-bash: ./argon2: cannot execute binary file: Exec format error
在运行 Debian 的 AWS t4g.micro 实例上的 M1 Mac 上运行argon2 compile 会抛出以下错误。
根据https://stackoverflow.com/a/47274698/4579271,arm64
并aarch64
参考相同的架构。
$ ./argon2 -h
-bash: ./argon2: cannot execute binary file: Exec format error
为相同的硬件架构提供二进制文件是不够的;它还需要针对适当的软件平台。在 M1 上为 macOS 构建的二进制文件不会在 Debian 上运行,即使在 M1 上也是如此(更不用说任何其他 ARM64 CPU)。
您得到的特定错误是因为您的二进制文件是Mach-O 二进制文件而产生的;Linux 系统需要 ELF 二进制文件。有适用于 Linux 的 Mach-O 加载程序(请参阅如何在 armv7l 上执行二进制类型的 Mach-O?),但我不知道它们是否允许您运行特定的二进制文件。
(加载二进制文件只是第一步;您还需要任何支持库,并且可能需要系统调用仿真——Maloader通过依赖 C 库来避免后者,将 macOS 程序绑定到主机本地 C 库,只需一点点翻译;这适用于任何不发出系统调用本身的程序。)