如何将预构建的共享库链接到Android NDK项目? [英] How to link a prebuilt shared Library to an Android NDK project?
问题描述
在这里,我使用了jni/
文件夹中的Android.mk
文件.
Here I used this Android.mk
file in jni/
folder.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Here we give our module name and source file(s)
LOCAL_MODULE := offlineDownload
LOCAL_SRC_FILES := offline_download.c
LOCAL_SHARED_LIBRARIES :=../lib/libpackext.so.1.0
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
在项目目录中创建一个lib
文件夹,并将我的预构建.so
库放入一个包含以下内容的Android.mk
文件
And make one lib
folder in project directory and put my prebuilt .so
library and make one Android.mk
file which contains following
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := packext
LOCAL_SRC_FILES := libpackext.so.1.0
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include
include $(PREBUILT_SHARED_LIBRARY)
当我使用ndk-build -B
命令时,我得到对packageExtraction的未定义引用.在这里,我使用预建库函数意味着无法将预建共享库链接到我的offlinedownload
库.
And when i use ndk-build -B
command than i got undefined reference to packageExtraction. Here I use my prebuilt library functions means I can't link my prebuilt shared library to my offlinedownload
library.
所以任何人都可以帮助我解决这个问题.
So any body please help me to solved out this issue.
推荐答案
此处是使用第3方共享库的完整Android.mk文件. 该库(libffmpeg.so)放在jni文件夹中. 其"LOCAL_EXPORT_C_INCLUDES"指定将库的头文件保存在何处.
Here is a complete Android.mk file for using a 3rd party shared library. The library (libffmpeg.so) is placed in the jni folder. Its "LOCAL_EXPORT_C_INCLUDES" specifies where the header files are kept for the library.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := libffmpeg.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../ffmpeg/libs/arm-linux-androideabi4.7_1/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpegandroid
LOCAL_SRC_FILES := ffmpegandroid.c
LOCAL_SHARED_LIBRARIES := ffmpeg
include $(BUILD_SHARED_LIBRARY)
如果要支持多种体系结构,则可以指定:
If you wanted to support multiple architectures then you could specify:
APP_ABI := armeabi armeabi-v7a x86 mips
在您的jni/Application.mk中,将LOCAL_SRC_FILES更改为以下内容:
in your jni/Application.mk and change the LOCAL_SRC_FILES to something like:
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libffmpeg.so
并将libffmpeg.so放在jni/armeabi/libffmpeg.so,jni/armeabi-v7a/libffmpeg.so等.
and place a libffmpeg.so at jni/armeabi/libffmpeg.so, jni/armeabi-v7a/libffmpeg.so etc ..
这篇关于如何将预构建的共享库链接到Android NDK项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!