Windows交叉编译Rust到Linux遇once_cell编译错误求助
Windows下交叉编译Rust到Linux失败的解决方法
这不是once_cell的限制,核心原因是你缺少了交叉编译所需的环境配置步骤,以下是具体解决流程:
添加目标平台的Rust工具链
先通过rustup安装对应架构的编译目标:# 针对x86_64架构的EC2实例 rustup target add x86_64-unknown-linux-gnu # 针对ARM架构的EC2实例 rustup target add aarch64-unknown-linux-gnu安装交叉编译的C工具链
Windows下需要对应架构的MinGW工具链来提供交叉编译的链接器:- 若使用MSYS2,打开MSYS2终端执行:
# x86_64目标 pacman -S mingw-w64-x86_64-gcc # aarch64目标 pacman -S mingw-w64-aarch64-gcc - 若使用Chocolatey包管理器,执行:
# x86_64目标 choco install mingw --x86_64 # aarch64目标 choco install mingw --arm64
- 若使用MSYS2,打开MSYS2终端执行:
配置Cargo指向交叉编译链接器
在用户目录下创建或编辑.cargo/config.toml文件,添加对应目标的配置:# x86_64目标配置 [target.x86_64-unknown-linux-gnu] linker = "x86_64-w64-mingw32-gcc" # aarch64目标配置(如果需要) [target.aarch64-unknown-linux-gnu] linker = "aarch64-w64-mingw32-gcc"注意:如果你的工具链可执行文件名不同(比如部分环境下是
x86_64-linux-gnu-gcc),需要对应修改linker的值。重新执行编译
执行带目标参数的编译命令(推荐加--release生成生产环境可执行文件):# x86_64目标 cargo build --release --target=x86_64-unknown-linux-gnu # aarch64目标 cargo build --release --target=aarch64-unknown-linux-gnu
如果仍有错误,检查工具链是否正确安装、环境变量是否包含工具链的路径,确保Cargo能找到指定的链接器。
内容的提问来源于stack exchange,提问作者Anatoly Bugakov
相关产品推荐
相关产品推荐

