我用Rust写了一个小游戏,我曾经cargo build --release
在Mac上编译发行版.
我试图与使用Ubuntu的朋友分享这个,但是当他试图运行二进制文件时,他得到了以下错误:
cannot execute binary file: Exec format error
我搜索了这个,但没有找到答案.Rust声称没有"没有运行时间"吗?它不应该能够以二进制形式运行吗?
没有运行时的Rust意味着它没有很多代码作为语言的一部分运行(例如垃圾收集器或字节码解释器).它仍然需要使用操作系统原语(即系统调用),这些在MacOS和Linux上是不同的.
你想要的是一个交叉编译器.如果您正在使用rustup
,那么安装交叉编译器应该很简单:
# Install the toolchain to build Linux x86_64 binaries
rustup target add x86_64-unknown-linux-gnu
然后建设是:
cargo build --release --target=x86_64-unknown-linux-gnu
警告:我没有OS X机器来测试它; 如果有效,请评论或编辑以解决此问题!