在用ndk-build编译so文件时,有时会提示找不到某个-lXXX(比如,-lopenal,-legal等等,这一般是我们引用的模块化的功能类库,在你的项目中能找到)。
比如提示:cannot find -lopenal
但是查看ndk-build的编译日志,其中有openal完整译日 志,并且没有出错,输出了
说明openal模块编译成功了。并成功生成了libopenal.so,这个文件位于项目目录 libs/arm64-v8a/libopenal.so
arm64-v8a是ndk-build编译的默认架构链接库。
所有我们现在要查看编译架构及openal模块配置在哪里???
ndk-build就是针对C的编译,所在android工程上肯定在jni目录下的android.mk里有配置
代码块如下 :
......
LOCAL_MODULE := openal
SRC_FILES := $(wildcard $(LOCAL_PATH)/../../../common/openal/*.c)
......LOCAL_SHARED_LIBRARIES := libopenal
LOCAL_LDLIBS := -L$(LOCAL_PATH)/../libs/armeabi
LOCAL_LDLIBS += -lz -lm -ldl -lGLESv2 -lEGL -llog -lopenal
从上面配置可以明白,该工程是需要指定固定的编译架构为armeabi,ndk-build支持指定编译架构的参数项APP_ABI="armeabi",也可支持多个,分空格分隔如“armeabi x86”所以原因是需要根据项目需要指定编译架构:
ndk-build APP_ABI="armeabi"