基本上,当我在Linux上开发时,我正在try 将最简单的代码编译到Windows.

fn main() {
    println!("Hello, and bye.")
}

我通过搜索互联网找到了以下命令:

rustc --target=i686-w64-mingw32-gcc  main.rs
rustc --target=i686_pc_windows_gnu -C linker=i686-w64-mingw32-gcc  main.rs

遗憾的是,它们都不起作用.它给了我一个关于std crate 丢失的错误

$ rustc --target=i686_pc_windows_gnu -C linker=i686-w64-mingw32-gcc  main.rs 

main.rs:1:1: 1:1 error: can't find crate for `std`
main.rs:1 fn main() {
          ^
error: aborting due to previous error

有没有办法在Linux上编译可以在Windows上运行的代码?

推荐答案

其他答案虽然在技术上是正确的,但却比需要的更难.没有必要使用rustc(事实上不鼓励使用cargo),您只需要rustupcargo和您的发行版的mingw-w64.

添加目标(也可以针对交叉编译的任何目标更改此选项):

rustup target add x86_64-pc-windows-gnu
rustup toolchain install stable-x86_64-pc-windows-gnu

您可以使用以下工具轻松搭建 crate :

cargo build --target x86_64-pc-windows-gnu

不需要跟~/.cargo/config或其他任何东西混在一起.

编辑:只是想补充一点,虽然你可以使用上面的方法,但有时也会让人头疼.我想补充一点,rust tools团队还维护一个名为cross:https://github.com/rust-embedded/cross的项目

Linux相关问答推荐

AWK:按第一列匹配两个文件不起作用

bind() 错误 98 - 地址已在使用中

cu可以从串口读取,但我自己的C程序不能

AWK 命令根据另一列中相同的值获取列中的不同值

使用 sed 或 awk 在 linux 中将第一行中的一个单词替换为第二行中的另一个单词

为什么 8 位字符串文字可以包含多字节字符,而 char 向量不能?

编译过度对齐的动态分配变量时出现 icpc 错误

在 SLURM 作业(job)脚本中设置和传递字符串变量

使用 RPATH 但不使用 RUNPATH?

如何将文件从 Vagrant 机器复制到 localhost

bash 脚本中的自动 docker 登录

如何查看安装的 pip 包大小?

区分 Windows 和类 Unix 系统的 Makefile

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

在 Ubuntu 中学习 OpenGL

在没有 python 命令的情况下在终端中运行 python 脚本

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

PHP exec - 判断是否启用或禁用

Linux(Ubuntu)终端-如何查看以前的页面不再可见

Linux cmd 在 jar 中搜索类文件,而不考虑 jar 路径