我无法从Ubuntu交叉编译到Windows

Vin*_*ike 0 compiler-errors rust rust-cargo

我想从Ubuntu到Windows交叉编译一些Rust代码,并收到有关onexitbegin的错误。

尝试遵循各种建议,但是它们没有我的特定错误消息:crt2.o:crtexe.c:(.rdata $ .refptr .__ onexitend [.refptr .__ onexitend] + 0x0):对`__onexitend'collect2的未定义引用:错误:ld返回1退出状态

cargo build --release --target x86_64-pc-windows-gnu
Run Code Online (Sandbox Code Playgroud)

期望建造一些东西,但它会炸毁。输出显示以下内容:/ usr / bin / x86_64-w64-mingw32-ld:/home/vince/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/ lib / crt2.o:crtexe.c :(。rdata $ .refptr .__ onexitbegin [.refptr .__ onexitbegin] + 0x0):对__onexitbegin' /usr/bin/x86_64-w64-mingw32-ld: /home/vince/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/crt2.o:crtexe.c:(.rdata$.refptr.__onexitend[.refptr.__onexitend]+0x0): undefined reference to__onexitend的未定义引用

Vin*_*ike 6

如果您收到有关未定义引用的消息

__onexitbegin`或类似的名称,可能是crt2.o的旧版本,而不是ming提供的版本。我做到了!(在稳定的锈蚀1.35上运行)。

在您的终端上尝试一下,看看是否有帮助:

cd ~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/

mv crt2.o crt2.o.bak

cp /usr/x86_64-w64-mingw32/lib/crt2.o ./
Run Code Online (Sandbox Code Playgroud)

现在应该为Windows构建可执行文件。