链接第三方静态库到另一个静态库

问题描述:

我试图创建将链接到第三方静态库静态库。 目前我收到的错误是链接第三方静态库到另一个静态库

没有规则,使目标`.../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共享库)。

+0

你的观察是正确的。 – Ita 2011-06-05 07:33:39

+0

你的观察是正确的。我试图利用NDK构建系统来生成一个静态库,我可以将其作为API发布。我希望能够避免使用.so文件,但不幸的是我不能。 – Ita 2011-06-05 07:39:41