在x86_64 Ubuntu22.04交叉编译Rust -sys crate到aarch64 Alpine遇工具缺失问题
解决aarch64-linux-musl-gcc找不到的问题
musl-tools仅提供x86_64架构的musl编译工具链,不会包含aarch64交叉编译所需的aarch64-linux-musl-gcc,你需要单独安装aarch64的musl交叉编译工具包,具体步骤如下:
1. 安装交叉编译工具链
Ubuntu 22.04的官方仓库里有现成的aarch64 musl交叉编译包,直接执行:
sudo apt update && sudo apt install gcc-aarch64-linux-musl
安装完成后,aarch64-linux-musl-gcc就会被添加到系统路径中。
2. 配置Rust使用该交叉编译器
有两种方式让Cargo识别这个交叉编译器:
- 临时编译指定:在编译命令中通过环境变量指定链接器:
CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc cargo build --target aarch64-unknown-linux-musl - 永久全局配置:编辑
~/.cargo/config.toml(如果没有就新建),添加以下内容:
之后编译时无需再手动指定环境变量。[target.aarch64-unknown-linux-musl] linker = "aarch64-linux-musl-gcc"
补充说明
你启用的vendored标志仅作用于让-sys crate使用本地 vendored 的依赖源码(而非系统预装库),但如果-sys crate需要编译C代码,仍然需要对应目标架构的交叉编译器,因此这一步无法替代交叉工具链的安装。
内容的提问来源于stack exchange,提问作者Vana
相关产品推荐
相关产品推荐

