编译Rust程序生成aarch64-linux-android平台.so文件遇编译器缺失报错
问题原因与解决方法
问题出在Rust的cargo默认会寻找不带API版本后缀的aarch64-linux-android-clang,但新版Android NDK里的clang工具都是带API级别后缀的(比如aarch64-linux-android29-clang),导致cargo无法定位到编译器。
解决方法
方法一:通过cargo配置文件指定编译器
在项目根目录下创建或编辑.cargo/config.toml文件,添加以下配置(替换为你本地的NDK路径和对应API版本):
[target.aarch64-linux-android] cc = "/path/to/your/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang"
- 注意:
linux-x86_64需根据你的主机系统调整,Mac主机可能是darwin-x86_64或darwin-arm64,Windows则是windows-x86_64;29替换为你NDK中实际存在的API版本号。
方法二:临时设置环境变量
在终端中先设置指定目标的编译器环境变量,再执行编译命令:
export CC_aarch64-linux-android="/path/to/your/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang" cargo build --release --target=aarch64-linux-android
前置检查
确保你已安装对应Rust目标:
rustup target add aarch64-linux-android
内容的提问来源于stack exchange,提问作者DarthCucumber
相关产品推荐
相关产品推荐

