错误:未找到链接器 `x86_64-w64-mingw32-gcc`

9

我正在使用MacOS Big Sur,并试图进行Windows交叉编译,但问题是,“错误:链接器x86_64-w64-mingw32-gcc未找到”,这阻止了我的操作。以下是我的cargo依赖项:

[dependencies]
rand = "0.8.4"
macroquad = "0.3.13"
perlin_rust = "0.1.0"
libm = "0.2.2"

我已经尝试了Cargo Clean/Update,并尝试使用mvsc而不是gnu。

2个回答

5
TLDR; 除了使用rustup安装交叉目标之外,您还需要安装实际的交叉链接器,并使用cargo配置文件或环境变量告诉cargo有关它。
看起来您正在尝试交叉编译软件包。 您可以在此处阅读有关交叉编译的更多信息; 简而言之,编译器是一个程序,它接收您的文本源代码并生成操作系统和CPU可以理解的内容。
当您为正在开发的平台构建软件时,一切都很好。您拥有所有工具,但是当您想要针对另一个平台或操作系统进行定位时,您需要一个编译器,该编译器被生产出来以在您的计算机上运行,但输出的二进制文件应该适用于目标平台/操作系统。
因此,在您的情况下,您需要安装针对mingw目标的mac的交叉工具链,因为rust本身没有交叉链接器。一旦获得交叉工具链,您所需要做的就是告诉cargo如何找到它。 这里是一个旨在使交叉编译更加轻松的项目。
我还强烈建议您阅读the cargo bookconfig在这里,您可以看到告诉货物如何使用交叉链接器的一种方法。另一种方法是使用环境变量(我更喜欢并且更容易与makefiles一起使用)。下面是我的一个makefile示例。enter image description here而且,the cargo book再次提到它。enter image description here 总体来说,交叉编译很痛苦,我花了相当长的时间才理解它的机制,但这是值得的,因为我不再只是在博客上复制粘贴命令了。我也觉得缺乏严谨的文档。Cargo book没有告诉你如何找到链接器,假设你已经知道这一点,并将交叉编译描述为安装了rustup的目标工具链后可以立即使用的东西。

1

我曾遇到过同样的问题,原因是项目所在的目录中有特殊字符,例如重音符号á、í等。 我将它们替换为常规字符,这个问题就不再出现了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接