我想在共享库中使用3个预构建的静态库。
问题是当ndk-build
试图链接到静态库时,我得到了大量未定义的引用。
'undefined references'源自静态库尝试在另一个静态库中调用方法时。例如,tinyNET在tinySAK中调用方法。依赖是这样的:
tinySAK没有依赖关系
tinyNET依赖于tinySAK,
tinyHTTP依赖于tinyNET和tinySAK
这是我的Android.mk的样子:
LOCAL_PATH := $(call my-dir)
# TINYSAK
include $(CLEAR_VARS)
LOCAL_MODULE := tinySAK
LOCAL_SRC_FILES := libtinySAK_armv7-a.a
include $(PREBUILT_STATIC_LIBRARY)
# TINYNET
include $(CLEAR_VARS)
LOCAL_MODULE := tinyNET
LOCAL_SRC_FILES := libtinyNET_armv7-a.a
include $(PREBUILT_STATIC_LIBRARY)
# TINYHTTP
include $(CLEAR_VARS)
LOCAL_MODULE := tinyHTTP
LOCAL_SRC_FILES := libtinyHTTP_armv7-a.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := \
/../../testclient.cpp \
/../../main.cpp \
/../../Webservice.cpp
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../includes/ \
$(LOCAL_PATH)/../../../doubango/tinyHTTP/include/ \
$(LOCAL_PATH)/../../../doubango/tinySAK/src/ \
$(LOCAL_PATH)/../../../doubango/tinyNET/src/
LOCAL_STATIC_LIBRARIES := tinySAK tinyNET tinyHTTP
include $(BUILD_SHARED_LIBRARY)
我该怎么做才能解决这个问题?
答案 0 :(得分:11)
我的天啊,这很简单。 对于任何有同样问题的人,我是如何解决的:
而不是
LOCAL_STATIC_LIBRARIES := tinySAK tinyNET tinyHTTP
使用
LOCAL_STATIC_LIBRARIES := tinyHTTP tinyNET tinySAK
意思是,首先具有最多依赖的那个。