如何从Mac到Linux交叉编译?

2024-02-23

我用 Rust 写了一个小游戏,然后用了cargo build --release在 Mac 上编译发行版本。

我尝试与使用 Ubuntu 的朋友分享此内容,但当他尝试运行二进制文件时,出现以下错误:

cannot execute binary file: Exec format error

我搜索了这个但没有找到答案。 Rust 不是声称“没有运行时”吗?它不应该能够以二进制形式在任何地方运行吗?


Rust 没有运行时意味着它没有大量代码作为语言的一部分运行(例如垃圾收集器或字节码解释器)。它仍然需要使用操作系统原语(即系统调用),并且这些在 MacOS 和 Linux 上是不同的。

你想要的是一个交叉编译器。如果您正在使用rustup, then 安装交叉编译器 https://github.com/rust-lang-nursery/rustup.rs/#cross-compilation应该很简单:

# 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 机器来测试这个;如果有效,请发表评论或编辑以修复此问题!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从Mac到Linux交叉编译? 的相关文章

随机推荐