[英]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 詳細信息
AWS 詳情
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.