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

qltillow  于 2022-11-24  发布在  Mac
关注(0)|答案(2)|浏览(230)

问题

我已经在Macbook上编写了一些相当简单的Rust代码,将部署在AWS EC2示例上,但当我对二进制文件进行SCP并运行它时,我遇到了“bash-program-cannot-execute-binary-file-exec-format-error

Mac详细信息

  • 产品名称:macOS操作系统
  • 产品版本:12.4
  • 构建版本:21 F79型
    AWS详细信息
  • 执行严修类型:t3.micro
  • 文件名:5.10.0-10-云-amd 64
    尝试的解决方案

我知道我的机器和EC2机器的架构不匹配,因为EC2是Debian,我假设我想要的目标类型是“aarch 64-unknown-linux-gnu”,但是运行cargo build --target=aarch64-unknown-linux-gnu会导致“error:与cc链接失败:退出状态:1“,并配有一个非常冗长的注解。

5f0d552i

5f0d552i1#

我发现做类似事情最简单的方法是使用cross。这是一个cargo扩展,它将把所有需要的依赖项拉到一个不同的架构上进行交叉编译。命令格式故意与cargo相同:
例如:

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

您可以在他们的wiki页面上找到设置说明:https://github.com/cross-rs/cross#installation
至于实际的错误,我相信在货物中设置目标的问题是,生 rust 仍然取决于安装的libc,这将是本机架构。cross通过使用docker映像来解决这个问题。

vmjh9lq9

vmjh9lq92#

目标体系结构似乎不是基于ARM的.. AMD应该需要x86_64目标。

相关问题