尝试使用NDK构建PocketSphinxAndroidDemo时遇到的问题

尝试使用NDK构建PocketSphinxAndroidDemo时遇到的问题,android,android-ndk,swig,android-ndk-r5,cmusphinx,Android,Android Ndk,Swig,Android Ndk R5,Cmusphinx,我正在尝试编译PocketSphinxAndroidDemo,它提供了一个在Android上实现CMU pocketsphinx语音识别器的示例。我首先收到一个类似于讨论的错误。在执行ndk构建后,我遇到以下错误: Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver Gdbsetup : libs/armeabi/gdb.setup Compile thumb : pocketsphinx_jn

我正在尝试编译PocketSphinxAndroidDemo,它提供了一个在Android上实现CMU pocketsphinx语音识别器的示例。我首先收到一个类似于讨论的错误。在执行ndk构建后,我遇到以下错误:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile thumb  : pocketsphinx_jni <= pocketsphinx_wrap.c
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:761:28: error: sphinxbase/err.h: No such file or directory
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c: In function 'Java_edu_cmu_pocketsphinx_pocketsphinxJNI_Decoder_1processRaw_1_1SWIG_10':
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:1441: warning: assignment discards qualifiers from pointer target type
make: *** [/home/nick/workspace/android/PocketSphinxDemo/obj/local/armeabi/objs-debug/pocketsphinx_jni/pocketsphinx_wrap.o] Error 1
任何试图编译PocketSphinxAndroidDemo的人都遇到过这个问题吗?我的编辑似乎允许我进一步编译,但现在我遇到了与程序集相关的错误:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile thumb  : pocketsphinx_jni <= pocketsphinx_wrap.c
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c: In function 'Java_edu_cmu_pocketsphinx_pocketsphinxJNI_Decoder_1processRaw_1_1SWIG_10':
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:1442: warning: assignment discards qualifiers from pointer target type
Compile thumb  : sphinxfeat <= cmn.c
/tmp/cceyE035.s: Assembler messages:
/tmp/cceyE035.s:655: Error: selected processor does not support `smull r1,r2,r0,r4'
/tmp/cceyE035.s:657: Error: unshifted register required -- `orr r1,r1,r2,lsl#20'
/tmp/cceyE035.s:932: Error: selected processor does not support `smull r1,r2,r0,r4'
/tmp/cceyE035.s:934: Error: unshifted register required -- `orr r1,r1,r2,lsl#20'
make: *** [/home/nick/workspace/android/PocketSphinxDemo/obj/local/armeabi/objs-debug/sphinxfeat/cmn.o] Error 1
Gdbserver:[arm-linux-androideabi-4.4.3]libs/armeabi/Gdbserver
gdb设置:libs/armeabi/gdb.setup

编译thumb:pocketsphinx_jni显然,有些源代码仍然需要标记为ARM编译。我修改了Android.mk的以下部分,将cmn.c和lda.c设置为使用ARM编译

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(SPHINX_PATH)/sphinxbase/include/android $(SPHINX_PATH)/sphinxbase/include
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_CFLAGS += -DANDROID_NDK

LOCAL_PATH := $(SPHINX_PATH)/sphinxbase/src/libsphinxbase/feat
LOCAL_MODULE := sphinxfeat

LOCAL_SRC_FILES := \
    agc.c \
    cmn.c.arm \
    cmn_prior.c.arm \
    feat.c \
    lda.c.arm

我仍然想知道是否有其他人必须这样做才能成功编译代码。

编辑文件jni/Android.mk

换行162:

LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx
致:


使用下面的解决方案,我成功地编译了我的代码;然而,我不认为这是必要的,因为我还没有读到其他人需要做同样的事情。因此,请随时提出您的解决方案。
LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx
LOCAL_STATIC_LIBRARIES := pocketsphinx sphinxlm sphinxfeat sphinxfe sphinxutil