如何使用Android ndk构建到third_part静态库的静态库链接

时间:2014-01-22 03:48:38

标签: android-ndk static-libraries

我想构建一个到third_part静态库的静态库链接。然后提供我建立给其他人使用的静态库。但是当其他人使用我的库时,他们发现错误“未定义引用'Func1()'”,“Func1()”是在third_part静态库中定义的函数。有没有人知道如何解决它?

Here's my Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := ThirdLib_Rebuild
LOCAL_SRC_FILES := libThird.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := MyLib
LOCAL_STATIC_LIBRARIES := ThirdLib_Rebuild
LOCAL_SRC_FILES := MyLib.c
include $(BUILD_STATIC_LIBRARY)

1 个答案:

答案 0 :(得分:0)

ndk-build支持传递依赖,即如果您定义依赖于MyLib模块的共享库或可执行文件,则libMyLib.a和libThird.a都将链接到它(如果没有,这是一个bug,您正在使用NDK吗?)。

但是,在将图书馆分发给其他人时,您并不十分清楚自己在做什么。为了记录,您需要将两个库分发给您的用户,因为libMyLib.a不包含来自libThird.a的代码,在MyLib模块定义中使用LOCAL_STATIC_LIBRARIES仅用于记录依赖项在两个库之间,与将其用于共享库或可执行文件时发生的情况不同。