我正在使用MacOS Big Sur,我正在尝试交叉编译到Windows,但问题是,这个“错误:链接器
x86_64-w64-mingw32-gcc
未找到”阻止我这样做,这是我的货物依赖项:
[dependencies]
rand = "0.8.4"
macroquad = "0.3.13"
perlin_rust = "0.1.0"
libm = "0.2.2"
我尝试过 Cargo Clean/Update,并且尝试过 mvsc 而不是 gnu
TLDR;
除了使用 rustup 安装交叉目标之外,您还需要安装一个实际的交叉链接器并使用 Cargo 配置文件或环境变量告诉 Cargo
您似乎正在尝试交叉编译您的包。 您可以在这里阅读有关交叉编译的更多信息; 简而言之,编译器是一个程序,它获取您的文本源代码并生成您的操作系统和 CPU 可以理解的内容。
当您为正在开发的平台构建软件时,一切都很好。您拥有所有工具,但是当您想要针对另一个平台或操作系统时,您需要一个编译器,该编译器是为在您的计算机上工作而生成的,但输出应该在目标平台/操作系统上工作的二进制文件。
因此,在您的情况下,您需要安装适用于 mingw 目标的 mac 的交叉工具链,因为 rust 本身没有交叉链接器。一旦你获得了交叉工具链,你所需要做的就是告诉 Cargo 如何找到它。
这里是一个旨在让交叉编译不那么痛苦的项目。
我也强烈建议你阅读货物书 在这里您可以看到告诉货物有关交联剂的方法之一 另一种方法是使用环境变量(我更喜欢它并且更容易与 makefile 一起使用) 下面你可以看到我的 makefile 中的一个示例 再次货物簿指的是它
总体交叉编译很痛苦,我花了相当长的时间来理解它的机制,但这是值得的,而不是复制粘贴我在博客上找到的命令。 我还觉得它缺乏严格的文档。 Cargo 书没有告诉你任何关于寻找链接器的信息,假设你已经知道这一点,并且图片交叉编译就像在使用 rustup 安装目标工具链后开箱即用的东西。
我也遇到了同样的问题,原因是我的项目目录中有特殊字符。例如重音 á、í 等。 所以我将它们更改为常规字符,问题就不再出现了。
sudo apt-get install mingw-w64
应该可以解决您的问题。它不是由 rustup 安装的,因此必须单独安装。