基本上,当我在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相关问答推荐

在程序集x86_64中跳转后调用ret时出现分段故障

AWK打印到文件正在追加,而不是覆盖

为什么库中不调用全局变量的构造函数?

命令行中使用`..`为什么会导致权限被拒绝错误?

ln命令报错target not a directory

8 个半小时范围的 Crontab 表达式

递归/详尽地将点插入字符串

使用 awk 将多行文本转换为 CSV

std::system 使用什么Shell?

Docker 容器立即退出

获取变量中的当前路径并使用它

我在哪里放置第三方库来设置 C++ Linux 开发环境?

全屏(Fullscreen)小部件

如何找出哪个进程正在消耗等待 CPU(即 I/O 阻塞)

XML 编辑/查看软件

通过 Linux FrameBuffer 将像素绘制到屏幕上

Linux:处理成服务

Hierarchical分层 ldd(1)

用curl编译php,curl安装在哪里?

如何在redhat linux上安装maven