簡體   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