基本上,我在Linux上进行开发时,尝试将最简单的代码编译到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
可悲的是,它们都不起作用。它给我关于标准箱丢失的错误
$ 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
有没有办法在Windows上运行的Linux上编译代码?
Rust发行版仅提供主机系统的编译库。但是,根据Rust上Arch Linux的Wiki页面,您可以从系统目录中适当位置(位于/usr/lib/rustlib或中/usr/local/lib/rustlib,具体取决于Windows)的Windows包中,从下载目录中复制编译的库(请注意,有i686和x86-64包)。安装Rust的地方),安装mingw-w64-gcc和Wine,您应该可以交叉编译。
/usr/lib/rustlib
/usr/local/lib/rustlib
如果您使用的是Cargo,则可以ar通过将其添加到~/.cargo/config($ARCH要使用的架构在哪里)来告诉Cargo在哪里寻找和链接器:
ar
~/.cargo/config
$ARCH
[target.$ARCH-pc-windows-gnu] linker = "/usr/bin/$ARCH-w64-mingw32-gcc" ar = "/usr/$ARCH-w64-mingw32/bin/ar"
注意:确切的路径可能会因您的分布而异。检查分发中mingw-w64软件包(GCC和binutils)的文件列表。
然后,您可以像这样使用货运:
$ # Build $ cargo build --release --target "$ARCH-pc-windows-gnu" $ # Run unit tests under wine $ cargo test --target "$ARCH-pc-windows-gnu"