You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust 1.56与Cargo 1.56是否不支持无binutils的Android NDK r23?

问题原因

你使用的Rust 1.56.1、Cargo 1.56.0版本默认面向Android编译时,会优先查找GNU binutils系列工具,未适配NDK r23及以上版本的改动。从NDK r23开始,谷歌完全移除了GNU binutils组件,所有二进制操作工具全部替换为LLVM实现,因此会触发找不到aarch64-linux-android-ar的报错。
Rust 1.56版本本身支持使用llvm-ar等LLVM工具替代binutils组件,只是默认不会自动识别NDK路径下的LLVM工具,需要手动配置或升级工具链解决。

解决方案

方案一:无需升级Rust,手动配置环境变量

  • 先定位NDK安装路径下的llvm-ar文件,默认路径为$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  • 根据编译的目标架构配置对应AR环境变量:
    编译aarch64架构执行:
    export AR_aarch64_linux_android=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
    
    编译armv7架构执行:
    export AR_armv7_linux_androideabi=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
    
    编译x86_64架构执行:
    export AR_x86_64_linux_android=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
    
  • 若同时存在链接器报错,可同步配置对应架构的链接器变量,示例为aarch64、minSdk 21的配置,架构和SDK版本可按需修改:
    export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang
    

方案二:升级Rust工具链自动适配

将Rust工具链升级到1.62及以上版本,该版本之后Cargo已经原生适配NDK r23+的LLVM工具链逻辑,构建时会自动查找对应路径下的llvm-ar,不需要额外手动配置环境变量。

内容的提问来源于stack exchange,提问作者Brad Spencer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:36:00