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

Android ndk 将第三方静态库链接到另一个静态库,android-ndk,static-libraries,static-linking,Android Ndk,Static Libraries,Static Linking,我正在尝试创建一个静态库,它将链接到第三方静态库。 目前我收到的错误是 没有规则使libqqrcAPI.a需要目标“…/libqqrcLib.a” 通过更新到新版本的NDK解决了这个问题,NDK支持使用预构建库(5b) 以下是我正在使用的Android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := qqrcLib LOCAL_SRC_FILES := libqqrc.a LOCAL_EXP

我正在尝试创建一个静态库,它将链接到第三方静态库。 目前我收到的错误是

没有规则使libqqrcAPI.a需要目标“…/libqqrcLib.a”

通过更新到新版本的NDK解决了这个问题,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。一个静态库,我为它声明了一个模块“qqrcLib”。
我希望能够将它链接到第二个名为“qqrcAPI”的模块(它在qqrcenempl.cpp中被引用)
由于libqrc.a是使用不同的方法编译的,因此将其设置为这2个库的格式非常重要

同样重要的是,我定义了一个Application.mk,如下所示:

APP_MODULES      := qqrcAPI 
APP_PROJECT_PATH := $(call my-dir)./..
以便能够创建静态库。(否则我没有得到任何输出…)

对我来说,当前的问题是,尽管我有一个单独的模块用于预构建库,并且它似乎正在编译,但我无法生成一个组合的静态库来保存预构建库。
我在obj\local\armeabi目录中有预构建库(qqrcLib.a)和新形成的静态库(qqrcAPI.a),但它似乎没有链接,因为新模块太小了

我做错了什么


帮助?:)

我认为您不能使用静态库和JNI。您将用作JNI的顶级库需要共享

据我所知,当您将一个静态库添加到另一个静态库时,第二个库
.a
文件并不包括第一个库的所有内容,即,您仍然需要链接两个
.a
文件,以使
.so
(或其他实际可执行文件)


一定有什么东西你真的想利用这些库?我认为无论下一步是什么(可能是
。所以
共享库),都可以解决您的问题。

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