2011-10-05 112 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