Android平台Rust编译Opus库失败的问题解决求助
解决Rust编译Android .so文件时Opus库的构建错误
核心报错定位
从日志里能提取两个关键问题:
- CMake工具链路径错误:NDK 23+版本已移除
build/cmake/android.toolchain.cmake旧路径,改用toolchains/llvm/prebuilt/<主机架构>/cmake/android.toolchain.cmake,但audiopus_sys的构建脚本仍在查找旧路径。 - 构建工具缺失:CMake找不到
make程序,CMAKE_MAKE_PROGRAM未配置。
分步解决方案
1. 安装基础构建工具
先确保系统具备make等基础编译工具,以Ubuntu/Debian为例:
sudo apt install build-essential
2. 配置正确的CMake工具链路径
通过环境变量指定NDK新版工具链路径,让audiopus_sys构建脚本能找到:
export CMAKE_TOOLCHAIN_FILE=/home/riyan/Android/Sdk/ndk/29.0.13113456/toolchains/llvm/prebuilt/linux-x86_64/cmake/android.toolchain.cmake
3. 升级Opus依赖版本(推荐)
当前使用的opus = "0.3.0"依赖的audiopus_sys v0.2.2对新NDK支持不完善,升级到新版可直接修复路径问题:
修改Cargo.toml中的依赖:
opus = "0.5.0" # 或更高稳定版本
4. 手动指定Make程序路径(可选)
如果仍提示找不到make,手动指定其路径:
export CMAKE_MAKE_PROGRAM=/usr/bin/make
5. 交叉编译Opus库备用方案(可选)
若升级依赖无效,可手动交叉编译Opus库后指定路径:
# 下载Opus源码 git clone https://github.com/xiph/opus.git cd opus mkdir build-android-arm64 && cd build-android-arm64 # 用NDK CMake配置编译 cmake .. \ -DCMAKE_TOOLCHAIN_FILE=/home/riyan/Android/Sdk/ndk/29.0.13113456/toolchains/llvm/prebuilt/linux-x86_64/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_PLATFORM=android-21 \ -DCMAKE_INSTALL_PREFIX=/your/custom/path/opus-arm64 # 编译安装 make install # 指定路径后编译Rust项目 export PKG_CONFIG_PATH=/your/custom/path/opus-arm64/lib/pkgconfig cargo ndk -t arm64-v8a build
最终编译验证
执行编译命令:
cargo ndk -t arm64-v8a build
内容的提问来源于stack exchange,提问作者khan rayyan
相关产品推荐
相关产品推荐

