1

AndroidでSpeexライブラリをコンパイルしようとしています。このライブラリを共有モードでコンパイルすると、すべて問題ありませんが、静的モードでコンパイルしようとすると、ndkは何もしないように見え、ライブラリは生成されません。

変更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がライブラリをコンパイルしないのはなぜですか?

4

1 に答える 1

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)
于 2012-09-24T12:00:34.540 に答える