问题
我已经在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“,并配有一个非常冗长的注解。
2条答案
按热度按时间5f0d552i1#
我发现做类似事情最简单的方法是使用cross。这是一个cargo扩展,它将把所有需要的依赖项拉到一个不同的架构上进行交叉编译。命令格式故意与cargo相同:
例如:
您可以在他们的wiki页面上找到设置说明:https://github.com/cross-rs/cross#installation
至于实际的错误,我相信在货物中设置目标的问题是,生 rust 仍然取决于安装的libc,这将是本机架构。
cross
通过使用docker映像来解决这个问题。vmjh9lq92#
目标体系结构似乎不是基于ARM的.. AMD应该需要x86_64目标。