ndk-build返回非零值2,已排查相关Stack Overflow问题
排查ndk-build返回非零值2的问题
我已经查找过多个同标题的相关问题,并且花了数小时逐一排查所有能找到的同类问题,但仍然没能解决,所以特此发布新提问。
我的Android.mk配置:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := com_lunaticcoding_colosseum_OpenCv.cpp LOCAL_LDLIBS += -llog LOCAL_MODULE := OpenCvFace include $(BUILD_SHARED_LIBRARY)
我的Application.mk配置(未完整):
APP_OPTIM := release APP_PLATFORM := android-21 APP_STL := gnustl_static APP_CPPFLAGS += -frtti APP_CPPFL...
针对ndk-build返回非零值2的问题,我结合你的配置给出几个具体排查方向:
- 先补全Application.mk的完整内容:目前你的
APP_CPPFLAGS行明显没写完,语法不完整很可能直接导致ndk-build解析失败,比如是不是漏写了-fexceptions这类参数,或者末尾有拼写错误?先把这部分补全再试。 - 核对源文件路径:确认
com_lunaticcoding_colosseum_OpenCv.cpp确实在Android.mk所在的目录下,如果文件放在子文件夹里,LOCAL_SRC_FILES需要写成相对路径,比如src/com_lunaticcoding_colosseum_OpenCv.cpp,路径不对会触发编译阶段的文件找不到错误。 - 检查NDK版本适配性:
gnustl_static在NDK r18及以后的版本已经被移除了,如果你的NDK版本比较新,建议把APP_STL改成c++_static或者c++_shared,同时确保APP_PLATFORM := android-21是你的NDK支持的最低平台版本。 - 获取详细错误日志:执行ndk-build的时候加上
V=1参数(也就是运行ndk-build V=1),这个参数会输出完整的编译、链接命令和具体错误信息——返回码2只是一个通用错误,只有看到具体的报错内容(比如头文件缺失、符号未定义、语法错误)才能精准定位问题。 - 确认OpenCV依赖配置:你的模块名叫
OpenCvFace,但Android.mk里完全没有链接OpenCV的相关配置,如果你的cpp代码里用到了OpenCV的API,必须在Android.mk里添加LOCAL_SHARED_LIBRARIES += opencv_java(或者对应OpenCV的静态库模块),同时要确保OpenCV的NDK路径已经正确引入到项目中。
内容的提问来源于stack exchange,提问作者Marco Papula
相关产品推荐
相关产品推荐

