安卓-NDK:将静态库添加到android.mk

4
我有三个静态库,来自一个框架,我想在我的项目中使用它们。这些库被称为 libtinySAK_armv7-a.a、libtinyNET_armv7-a.a 和 libtinyHTTP_armv7-a.a。我已经将它们放在与Android.mkApplication.mk相同的文件夹中。
我的本地代码依赖于它们,因此我想将它们包含在我的共享库中。
根据我在stackoverflow和Google上阅读到的内容,我认为android.mk应该如下所示:
# TINYSAK
include $(CLEAR_VARS)

LOCAL_MODULE    := tinySAK
LOCAL_SRC_FILES := libtinySAK_armv7-a.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../doubango/tinySAK/src/

include $(PREBUILT_STATIC_LIBRARY)


# TINYNET
include $(CLEAR_VARS)

LOCAL_MODULE    := tinyNET
LOCAL_SRC_FILES := libtinyNET_armv7-a.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../doubango/tinyNET/src/

include $(PREBUILT_STATIC_LIBRARY)


# TINYHTTP
include $(CLEAR_VARS)

LOCAL_MODULE    := tinyHTTP
LOCAL_SRC_FILES := libtinyHTTP_armv7-a.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../doubango/tinyHTTP/include/

include $(PREBUILT_STATIC_LIBRARY)




LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := libtest

LOCAL_SRC_FILES := \
../../test/stack.cpp \
../../test/main.cpp 

LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../test/include/ \
$(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)

我的 Application.mk:
APP_STL := stlport_static
APP_ABI := armeabi-v7a

我在编译时(从项目目录执行“ndk-build”命令)遇到的错误是:
jni/Android.mk:tinySAK: LOCAL_SRC_FILES  points to a missing file 

我想其他两个库也失败了。为什么找不到它们? 除此之外,我的makefile中还有其他错误吗?

谢谢。

2个回答

3

没关系,我已经解决了。

我只在makefile开头声明了“LOCAL_PATH”。否则它会在NDK文件夹中寻找库。


LOCAL_PATH 应该在哪里声明? - alex

2

尝试使用LOCAL_LDLIBS代替LOCAL_SRC_FILES


如果我尝试这样做,它会显示以下内容:“jni/Android.mk:tinySAK:预构建静态库的LOCAL_SRC_FILES应该只包含一个项目”。 - KaiserJohaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接