2012-09-24 29 views
1

我试图编译Android中的Speex库。当我以共享模式编译这个库时,一切都可以,但是当我尝试在静态模式下编译时,ndk看起来什么都不做,并且它没有生成库。在Android中编译speex(STATIC_LIBRARY)

我读过,我只需要更改include $(BUILD_SHARED_LIBRARY)(BUILD_STATIC_LIBRARY)但这不起作用,库不编译,我没有在控制台中得到任何错误。

Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := speex 

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) 
    LOCAL_CFLAGS += -DHAVE_NEON=1 
endif 

LOCAL_CFLAGS += -DHAVE_CONFIG_H 

LOCAL_C_INCLUDES := ../include \ 
       ../libspeex \ 
       ../   \ 

LOCAL_SRC_FILES := ../libspeex/bits.c  \ 
      ../libspeex/buffer.c \ 
      ../libspeex/cb_search.c \ 
       ... 
      ../libspeex/vq.c  \ 
      ../libspeex/window.c \ 

LOCAL_CFLAGS += -DANDROID 

include $(BUILD_STATIC_LIBRARY) 

Application.mk

APP_PROJECT_PATH := $(call my-dir) 
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk 
APP_STL := stlport_static 
STLPORT_FORCE_REBUILD := true 
APP_ABI := armeabi-v7a armeabi 
APP_OPTIM := release 
APP_PLATFORM := android-8 

有什么不对?为什么NDK不能编译库?

回答

2

我已经解决了它指定在同一Android.mk,使用静态库共享模式下编译的模块编译之前:

Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := speex-static 

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) 
    LOCAL_CFLAGS += -DHAVE_NEON=1 
endif 

LOCAL_CFLAGS += -DHAVE_CONFIG_H 

LOCAL_C_INCLUDES := ../include \ 
       ../libspeex \ 
       ../   \ 

LOCAL_SRC_FILES := ../libspeex/bits.c  \ 
      ../libspeex/buffer.c \ 
      ../libspeex/cb_search.c \ 
       ... 
      ../libspeex/vq.c  \ 
      ../libspeex/window.c \ 

LOCAL_CFLAGS += -DANDROID 

include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) 
    LOCAL_CFLAGS += -DHAVE_NEON=1 
endif 
LOCAL_MODULE := speex 
LOCAL_STATIC_LIBRARIES := speex-static 
LOCAL_CFLAGS += -DANDROID 
include $(BUILD_SHARED_LIBRARY)