2011-10-05 109 views
4

我有一个框架,我想在我的项目中使用三个静态库。这些库被称为libtinySAK_armv7-a.a, libtinyNET_armv7-a.a and libtinyHTTP_armv7-a.a。我已将它们放在与Android.mkApplication.mk相同的文件夹中。android-ndk添加静态库到android.mk

我的本地代码依赖于它们,所以我想将它们包含在我的共享库中。

从我读过关于计算器和google'd我相信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 

而且我想其他2个lib拉里也失败了。为什么它找不到它们? 除此之外,在makefile中是否还有其他错误?

感谢

回答

3

没关系,我解决了它。

我只在make-file的开头声明了“LOCAL_PATH”。否则,它会查找ndk文件夹中的库。

+0

感谢发布,这也解决了我的问题! –

+0

应该在哪里声明LOCAL_PATH – alex

2

尝试LOCAL_LDLIBS,而不是LOCAL_SRC_FILES

+0

这就是它说的如果我尝试:“jni/Android.mk:tinySAK:预建静态库的LOCAL_SRC_FILES应该只包含一个项目” – KaiserJohaan

+0

+1,因为LOCAL_LDLIBS为我工作。 – steveha