繁体   English   中英

如何在 MacOS 上编译 Rust 以在 AWS EC2 实例上运行? “无法执行二进制文件:Exec 格式错误”

[英]How do I compile Rust on MacOS, to be run on an AWS EC2 instance? "cannot execute binary file: Exec format error"

问题

我在 Macbook 上编写了一些相当简单的 Rust 代码,用于部署在 AWS EC2 实例上,但是当我通过 SCP 二进制文件并运行它时,我遇到了“ bash-program-cannot-execute-binary-file-exec -格式错误

Mac 详细信息

  • 产品名称:macOS
  • 产品版本:12.4
  • 构建版本:21F79

AWS 详情

  • 实例类型:t3.micro
  • uname -r : 5.10.0-10-cloud-amd64

尝试的解决方案

我知道我的机器与 EC2 机器的架构不匹配,因为 EC2 是 Debian,我假设我想要的目标类型是“aarch64-unknown-linux-gnu”,但是运行cargo build --target=aarch64-unknown-linux-gnu导致“error: linking with cc failed: exit status: 1”,并附有很长的注释。

我发现做类似事情的最简单方法是使用cross 这是一个货物扩展,它将引入交叉编译到不同架构所需的所有依赖项。 命令格式特意与 cargo 相同:

例如

cross build --release --target aarch64-unknown-linux-gnu

您可以在他们的维基页面上找到设置说明: https://github.com/cross-rs/cross#installation

至于实际错误,我认为仅在 cargo 中设置目标的问题是 rust 仍将取决于已安装的 libc,它将用于本机架构。 cross使用 docker 张图像来解决这个问题。

看起来目标架构不是基于 arm 的。AMD 应该需要一个 x86_64 目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM