最近的实践中,有一个开源库在linux上运行良好,但是想把它打包到android平台,需要在ndk编译使用
这个开源库,是有源码的,在linux上编译出so库,在ndk编译有错误,具体错误码,记不清楚了,但是很明显是linux平台的gcc/g++编译的,而不是ndk的交叉编译环境出来的so库,所以ndk编译不成功。那么。。。如何解决的
1. ndk交叉编译源码第三方库
如果别人给的动态库是linux环境编译的,看来还真不好直接用在Android环境中。需要Android平台的编译出来的so库
- 建立jni目录,开源代码全部拷贝进jni。示例的Android.mk 是带了Opencv-android SDK
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ../../../sdk/native/jni/OpenCV.mk
MY_CPP_LIST := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_SRC_FILES := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES += $(LOCAL_PATH) \
$(JNI_H_INCLUDE)
LOCAL_LDLIBS += -llog -ldl -pthread -lm
LOCAL_SHARED_LIBRARIES += \
libandroid \
LOCAL_MO