从Linux到Windows交叉编译Rust应用程序
基本上,我在Linux上进行开发时,尝试将最简单的代码编译到Windows。
fn main() { println!("Hello, and bye.")
}
我通过搜索互联网找到了这些命令:
rustc --target=i686-w64-mingw32-gcc main.rsrustc --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.rsmain.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,您应该可以交叉编译。
如果您使用的是Cargo,则可以ar
通过将其添加到~/.cargo/config
($ARCH
要使用的架构在哪里)来告诉Cargo在哪里寻找和链接器:
[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"
以上是 从Linux到Windows交叉编译Rust应用程序 的全部内容, 来源链接: utcz.com/qa/429404.html