如何将预构建的共享库链接到 Android NDK 项目? [英] How to link a prebuilt shared Library to an Android NDK project?

查看:33
本文介绍了如何将预构建的共享库链接到 Android NDK 项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里我使用了 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.

推荐答案

这是一个完整的 Android.mk 文件,用于使用 3rd 方共享库.库 (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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆