Проблемы при попытке собрать PocketSphinxAndroidDemo с использованием NDK - PullRequest
4 голосов
/ 02 марта 2011

Я пытаюсь скомпилировать PocketSphinxAndroidDemo, который предоставляет пример реализации распознавателя речи Pocketphinx CMU на Android.Сначала я получил ошибку, похожую на обсуждение здесь .После выполнения ndk-build я получил эту ошибку:

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

Я попытался порекомендовать пересобрать библиотеки sphinxbase и pocketsphinx и пересобрать с ndk-build -B, но это не сработало.Затем я изменил файл swig jni / pocketsphinx.i, чтобы изменить включение для err.h:

#include <pocketsphinx.h>
//#include <sphinxbase/err.h>
#include <err.h>

Кто-нибудь, кто пытался скомпилировать 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

Опять же, кто-нибудь знает, как решить эту проблему?Я не видел, чтобы другие разработчики жаловались на эту проблему, поэтому я не решаюсь идти дальше.Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

По-видимому, некоторые источники еще нужно пометить для компиляции 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

Мне все еще интересно, нужно ли кому-то еще делать это, чтобы успешно компилировать свой код.

1 голос
/ 12 апреля 2012

Редактировать файл jni / Android.mk

Изменить строку 162:

LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx

на:

LOCAL_STATIC_LIBRARIES := pocketsphinx sphinxlm sphinxfeat sphinxfe sphinxutil
...