链接第三方静态库到另一个静态库
问题描述:
我试图创建将链接到第三方静态库静态库。 目前我收到的错误是链接第三方静态库到另一个静态库
没有规则,使目标`.../libqqrcLib.a”,由libqqrcAPI.a
这是通过更新到较新的解决需要一个支持与预建库工作的NDK版本(5B)
这里是Android.mk我使用:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := qqrcLib
LOCAL_SRC_FILES := libqqrc.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/coreLib/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/qqrc/
LOCAL_MODULE := qqrcAPI
LOCAL_SRC_FILES := qqrcEngineImpl.cpp
LOCAL_STATIC_LIBRARIES := qqrcLib
include $(BUILD_STATIC_LIBRARY)
基本上我有一个qqrc.a静态库,我已经为它“qqrcLib”声明了一个模块。
我希望能够将它链接到第二个名为“qqrcAPI”的模块(它在qqrcEngineImpl.cpp中被引用)
由于libqqrc.a是使用不同的方法。
而且项重要的声明,我定义的Application.mk,看起来像这样:
APP_MODULES := qqrcAPI
APP_PROJECT_PATH := $(call my-dir)./..
为了能够创建一个静态库。 (否则我没有输出..)
对我来说,目前的问题是即使我有一个单独的预构建库模块,它似乎编译,我不能产生一个组合的静态库,将在其中保存预构建的lib。
我在OBJ \本地\ armeabi目录的预建库(qqrcLib.a)和新形成的静态库(qqrcAPI.a),但它似乎没有联系的,因为新的模块太小...
我在做什么错?
有帮助吗? :)
答
我不认为你可以使用静态库和JNI。您要用作JNI的顶级库需要共享。
据我理解这个问题,当您添加静态库到另一个静态库的第二个库.a
文件不包括所有的第一个库,即你还需要两个.a
文件链接,使.so
(或其他实际可执行文件)。
一定是有什么事情,你实际上是试图利用这些库的?我认为解决您的问题的方法来自下一步(可能是.so
共享库)。
你的观察是正确的。 – Ita 2011-06-05 07:33:39
你的观察是正确的。我试图利用NDK构建系统来生成一个静态库,我可以将其作为API发布。我希望能够避免使用.so文件,但不幸的是我不能。 – Ita 2011-06-05 07:39:41