当前位置:  开发笔记 > 编程语言 > 正文

如何从Mac交叉编译到Linux?

如何解决《如何从Mac交叉编译到Linux?》经验,为你挑选了1个好方法。

我用Rust写了一个小游戏,我曾经cargo build --release在Mac上编译发行版.

我试图与使用Ubuntu的朋友分享这个,但是当他试图运行二进制文件时,他得到了以下错误:

cannot execute binary file: Exec format error

我搜索了这个,但没有找到答案.Rust声称没有"没有运行时间"吗?它不应该能够以二进制形式运行吗?



1> Chris Emerso..:

没有运行时的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机器来测试它; 如果有效,请评论或编辑以解决此问题!


@FrontMage - 你如何在Mac上安装`x86_64-linux-gnu-gcc`?
这不会产生二进制文件:`错误:链接\`cc \`失败:`...`=注意:clang:警告:编译期间未使用的参数:' - pie'[-Wunused-command-line-argument] ld:未知选项:--as-needed clang:error:链接器命令失败,退出代码为1(使用-v查看调用)
@Shepmaster,您可能需要安装链接器,`brew install FiloSottile / musl-cross / musl-cross`或`brew install gcc`,并将其添加到`.cargo / config`。
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有