Android ndk 将第三方静态库链接到另一个静态库
我正在尝试创建一个静态库,它将链接到第三方静态库。 目前我收到的错误是 没有规则使libqqrcAPI.a需要目标“…/libqqrcLib.a” 通过更新到新版本的NDK解决了这个问题,NDK支持使用预构建库(5b) 以下是我正在使用的Android.mk: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
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文件,但不幸的是我不能。