当前位置: 首页 > 面试题库 >

从Linux到Windows交叉编译Rust应用程序

史昊焱
2023-03-14
问题内容

基本上,我在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,您应该可以交叉编译。

如果您使用的是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交叉编译C ++应用程序的手册? 只是。我想要一些信息(链接,参考,示例…)来指导我做到这一点。 我什至不知道是否可能。 我的目标是在Linux上编译程序并获取一个可以在Windows下运行的.exe文件。 问题答案: 基础不太难: 替换为,或您的Linux发行版使用的任何格式。这将为Windows 生成一个。 一旦解决了这个问题,就可以使用aut

  • 问题内容: 我已经安装在Windows机器上的Go 1.2,写了一个虚拟的程序和设置环境变量,并以“AMD64”及“LINUX”。 当我发出“ ”命令时,出现错误: 这是什么意思? 问题答案: 它告诉您需要先构建所有工具,然后才能使用它们。 如果您的Windows GOARCH是amd64,则可以通过运行以下小批处理程序来“构建”所有必需的工具: 如果成功,那么您应该能够执行您所描述的操作(只使用

  • 问题内容: 要使用Qt SDK在Linux中创建应用程序,应该在Linux中交叉编译应用程序还是在Windows中交叉编译应用程序? 问题答案: 您需要 在 Linux上 针对 Windows 进行交叉编译。 编辑: 在 Linux 上安装MinGW 。 *在 *Linux 上 交叉编译 您的Qt代码。应该生成Windows二进制文件( .exe )。 大功告成 使用Qt运行时库在任何Window

  • 问题内容: 到目前为止,我已经在ubuntu系统上安装了所有交叉编译软件包,但是遇到了问题,需要一些帮助。 这是我需要交叉编译的目标计算机。编译时应使用哪些标志? 问题答案: 给出以下列表, gcc-4.7-aarch64-linux-gnu-GNU C编译器 gcc-4.7-arm-linux-gnueabi-GNU C编译器 gcc-4.7-arm-linux-gnueabi-base-GCC

  • 我想将macOS上的Rust应用程序交叉编译为Raspberry PI2。我找了很多,但没有找到一个可行的解决办法。我尝试的最后一个解决方案是遵循这个答案,但我无法让它工作。 null 似乎无法在macOS计算机上运行二进制文件。将Rust应用程序从macOS交叉编译到Raspberry PI2的ARM架构的正确方法是什么?

  • 我试图遵循各种建议,但它们没有我的特定错误消息:crt2.o:crtexe.c:(.rdata$.refptr.__onexitend[.refptr.__onexitend]+0x0):未定义对`__onexitend'的引用collect2:error:ld返回1退出状态 希望得到一些东西,但它爆炸了。输出如下所示:/usr/bin/x86_64-w64-mingw32-ld://home/v