我想从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
原本打算建造一些东西,但它会炸毁。
输出说明:
/ 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'
答案 0 :(得分:2)
__ 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 ./
您的可执行文件现在应该为Windows构建。