Linux arm64环境NDK编译Android项目报aarch64架构错误求助
解决Linux arm64环境下NDK 25编译报错"Unknown host CPU architecture: aarch64"
问题根源
NDK 25的构建脚本未正确识别Linux arm64主机的aarch64架构标识,导致无法匹配对应的编译工具链;你之前尝试的arch -arm64是macOS专属命令,Linux环境不支持,所以无效。
可行解决方案
方案1:修改NDK架构检测脚本
找到NDK安装目录下的build/core/setup.mk文件,定位到Linux主机架构判断的代码段:
ifeq ($(HOST_OS),linux) ifeq ($(HOST_ARCH),x86_64) HOST_TAG := linux-x86_64 else ifeq ($(HOST_ARCH),x86) HOST_TAG := linux-x86 endif endif
添加对aarch64的识别逻辑:
ifeq ($(HOST_OS),linux) ifeq ($(HOST_ARCH),x86_64) HOST_TAG := linux-x86_64 else ifeq ($(HOST_ARCH),x86) HOST_TAG := linux-x86 else ifeq ($(HOST_ARCH),aarch64) HOST_TAG := linux-arm64 endif endif
保存后重新执行编译即可。
方案2:通过环境变量强制指定HOST_TAG
无需修改脚本,直接在执行编译前设置环境变量:
export HOST_TAG=linux-arm64 ndk-build
如果是在Android Studio中构建,可在模块的build.gradle中配置:
android { externalNativeBuild { ndkBuild { path "src/main/jni/Android.mk" arguments "HOST_TAG=linux-arm64" } } }
方案3:升级NDK版本
NDK 26及以上版本已完善对Linux arm64主机的支持,直接将项目的ndkVersion升级到最新稳定版即可,例如:
android { ndkVersion "26.1.10909125" }
升级后无需任何额外修改,编译逻辑会自动适配Linux arm64环境。
内容的提问来源于stack exchange,提问作者Oleksandr Shurdak
相关产品推荐
相关产品推荐

