android ndk 怎样调用第三方的so库文件

android ndk 怎样调用第三方的so库文件


背景:
编译一个test可执行文件,这个文件用到了libpoint.so(自己编译的)。同时libpoint.so依赖于libxml.so,而libxml.so又依赖于libiconv.so。
好了,开始蛋疼的编译。用cygwin在win7下编译
首先是jni目录的结构
android ndk 怎样调用第三方的so库文件 - 风间沧月 - 风间沧月
Android.mk文件内容
 
   

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
test.c
LOCAL_SHARED_LIBRARIES := point xml iconv
LOCAL_LDLIBS :=-llog
LOCAL_MODULE:=test
include $(BUILD_EXECUTABLE)
include $(LOCAL_PATH)/prebuilt/Android.mk

prebuild目录
android ndk 怎样调用第三方的so库文件 - 风间沧月 - 风间沧月
include目录就是用到的.h文件
xml目录是依赖的libxml.so库文件
Android.mk内容
 
    

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := point
LOCAL_SRC_FILES := libpoint.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(LOCAL_PATH)/xml/Android.mk

xml目录
android ndk 怎样调用第三方的so库文件 - 风间沧月 - 风间沧月
到这里基本就能看出规律了,
这里的Android.mk内容和上层的基本相同,如下
 
     

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xml
LOCAL_SRC_FILES := libxml.so
include $(PREBUILT_SHARED_LIBRARY)
include $(LOCAL_PATH)/iconv/Android.mk
#libxml.so libiconv.so

iconv目录:
android ndk 怎样调用第三方的so库文件 - 风间沧月 - 风间沧月
Android.mk内容
 
      

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := iconv
LOCAL_SRC_FILES := libiconv.so
include $(PREBUILT_SHARED_LIBRARY)
#libxml.so libiconv.so


有上边可以看到,依赖无非就是一层层的加上去。
在编译的过程,可能遇到如下的错误
android ndk 怎样调用第三方的so库文件 - 风间沧月 - 风间沧月
可以看到是权限错误(permission dendied),只要找到相关目录,chmod即可


你可能感兴趣的:(android,NDK,调用,so库文件)