从GitHub拉取的OpenCV无法为Android编译,报错NDK工具链缺失
以下是针对该错误的具体排查和修复步骤:
修正NDK路径指向
你的CMake命令中-DANDROID_NDK参数指向的是NDK的父目录,而非具体版本的NDK文件夹。NDK 25.x采用独立版本目录结构,必须指定到包含toolchains子目录的精确路径:-DANDROID_NDK=~/Android/Sdk/ndk/25.1.8937393验证NDK工具链完整性
手动检查NDK路径下的toolchains/llvm/prebuilt/linux-x86_64/bin(根据你的编译主机系统调整,如macosx-x86_64)目录,确认存在aarch64-linux-android32-clang、armv7a-linux-androideabi32-clang等编译工具。若文件缺失,重新下载完整的NDK 25.1.8937393版本,避免下载中断导致的文件损坏。检查CMake版本兼容性
NDK 25.x要求CMake版本≥3.21.1。执行cmake --version查看当前版本,若低于要求,升级CMake到对应版本。旧版CMake无法正确识别NDK 25的工具链布局。确认Android平台版本的有效性
检查~/Android/Sdk/ndk/25.1.8937393/platforms/android-32目录,确认存在arch-arm64、arch-arm等子目录及对应的头文件、库文件。若该目录缺失,说明NDK未包含API Level 32的支持,可尝试更换为android-31或其他NDK支持的平台版本。清理构建缓存后重新编译
残留的构建缓存可能导致配置错误,先清空build_android目录再重新执行编译命令:rm -rf ~/extProjects/opencv/build_android/* cd ~/extProjects/opencv && mkdir -p build_android && cd build_android cmake -DANDROID_SDK_TOOLS=~/Android/Sdk/tools -DANDROID_NDK=~/Android/Sdk/ndk/25.1.8937393 -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=~/extProjects/opencv/platforms/android/android.toolchain.cmake -DANDROID_PLATFORM=android-32 -DINSTALL_CREATE_DISTRIB=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=./install ~/extProjects/opencv && make
内容的提问来源于stack exchange,提问作者madan kandula

