简体   繁体   English

尝试在Windows和Cygwin上使用NDK构建Android版PocketSphinx的问题

[英]Issue trying to build PocketSphinx for Android using the NDK on Windows with Cygwin

I'm currently trying to build the PocketSphinx library for Android using the NDK on Windows with Cygwin. 我目前正在尝试在Windows和Cygwin上使用NDK构建适用于Android的PocketSphinx库。 I have the PocketSphinxAndroidDemo project code. 我有PocketSphinxAndroidDemo项目代码。 I also have the pocketsphinx and shpinxbase projects as sub folders of the E:/Development/CMUSphinx folder. 我还将Pocketsphinx和shpinxbase项目作为E:/ Development / CMUSphinx文件夹的子文件夹。

I'm trying to build using ndk-build from the project folder. 我正在尝试从项目文件夹中使用ndk-build进行构建。 The Android.mk file in the /jni/ folder of the project looks like this - 项目/ jni /文件夹中的Android.mk文件如下所示-

# Build the native component of the PocketSphinx library for Android.

# You MUST change this to the absolute path of the directory containing
# sphinxbase and pocketsphinx source code.
SPHINX_PATH := E:/Development/CMUSphinx

# Copy this Android.mk along with pocketsphinx_wrap.c and the contents of the 'edu' folder
# built by swig to the jni/ directory of your Android project.
BASE_PATH := $(call my-dir)

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/util
LOCAL_MODULE := sphinxutil

LOCAL_SRC_FILES := \
 bio.c \
 bitvec.c \
 case.c \
 ckd_alloc.c \
 cmd_ln.c \
 dtoa.c \
 err.c \
 errno.c \
 f2c_lite.c \
 filename.c \
 genrand.c \
 glist.c \
 hash_table.c \
 heap.c \
 huff_code.c \
 info.c \
 listelem_alloc.c \
 logmath.c.arm \
 matrix.c \
 mmio.c \
 pio.c \
 profile.c \
 sbthread.c \
 strfuncs.c \
 utf8.c

include $(BUILD_STATIC_LIBRARY)

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/fe
LOCAL_MODULE := sphinxfe
LOCAL_ARM_MODE := arm

LOCAL_SRC_FILES := \
 fe_interface.c \
 fe_sigproc.c \
 fe_warp_affine.c \
 fe_warp.c \
 fe_warp_inverse_linear.c \
 fe_warp_piecewise_linear.c \
 fixlog.c

include $(BUILD_STATIC_LIBRARY)

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 \
 cmn_prior.c \
 feat.c \
 lda.c

include $(BUILD_STATIC_LIBRARY)

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/lm
LOCAL_MODULE := sphinxlm

LOCAL_SRC_FILES := \
 fsg_model.c \
 jsgf.c \
 jsgf_parser.c \
 jsgf_scanner.c \
 lm3g_model.c \
 ngram_model_arpa.c \
 ngram_model_dmp.c \
 ngram_model_set.c \
 ngram_model.c

include $(BUILD_STATIC_LIBRARY)

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

LOCAL_PATH := $(SPHINX_PATH)/pocketsphinx/src/libpocketsphinx
LOCAL_MODULE := pocketsphinx

LOCAL_SRC_FILES := \
 acmod.c     \
 bin_mdef.c    \
 blkarray_list.c   \
 dict.c     \
 dict2pid.c    \
 fsg_history.c   \
 fsg_lextree.c   \
 fsg_search.c   \
 hmm.c.arm     \
 mdef.c     \
 ms_gauden.c.arm    \
 ms_mgau.c.arm    \
 ms_senone.c.arm    \
 ngram_search.c   \
 ngram_search_fwdtree.c \
 ngram_search_fwdflat.c \
 phone_loop_search.c  \
 pocketsphinx.c \
 ps_lattice.c   \
 ps_mllr.c    \
 ptm_mgau.c.arm    \
 s2_semi_mgau.c.arm   \
 tmat.c     \
 vector.c

include $(BUILD_STATIC_LIBRARY)

# Create the dynamic library wrapper
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(SPHINX_PATH)/sphinxbase/include/android $(SPHINX_PATH)/sphinxbase/include \
     $(SPHINX_PATH)/pocketsphinx/include
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_CFLAGS += -DANDROID_NDK

LOCAL_PATH := $(BASE_PATH)
LOCAL_MODULE := pocketsphinx_jni

LOCAL_SRC_FILES := pocketsphinx_wrap.c

PRIVATE_WHOLE_STATIC_LIBRARIES := \
 $(call static-library-path,sphinxutil) \
 $(call static-library-path,sphinxfe) \
 $(call static-library-path,sphinxfeat) \
 $(call static-library-path,sphinxlm) \
 $(call static-library-path,pocketsphinx)
LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx

include $(BUILD_SHARED_LIBRARY)

When I run the ndk-build command I get the following error: 当我运行ndk-build命令时,出现以下错误:

build-binary.mk:197: *** target pattern contains no '%'. Stop.

I can build all the ndk samples just fine. 我可以很好地构建所有ndk示例。 Any clue what's causing this error? 任何线索是什么导致此错误? Many thanks in advance! 提前谢谢了!

Jason, Edit jni/Android.mk file 杰森(Jason),编辑jni / Android.mk文件

Change Line 162 : 换行162:

LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx

to : 至 :

LOCAL_STATIC_LIBRARIES := pocketsphinx sphinxlm sphinxfeat sphinxfe sphinxutil

That will resolve your issue. 这样可以解决您的问题。

Do you know if this project has been previously built using cygwin with success? 您知道这个项目以前是否已经成功使用cygwin构建? Cygwin has a number of oddities, from the awkward combination of windows drive letters with unix paths, to interpreting an inadvertent double slash in an assembled path unusually, and more. Cygwin有很多奇怪的地方,从Windows驱动器字母和Unix路径的笨拙组合到异常地解释在组装路径中无意的双斜杠,等等。 You could try the /cygdrive/e/ type of path instead of a drive letter, but who knows if that will help. 您可以尝试使用/ cygdrive / e /而不是驱动器号的路径类型,但是谁知道这会有所帮助。

Jason, you have to change your sphinx path to cygwin format ie without ":" 杰森,您必须将狮身人面像路径更改为cygwin格式,即不带“:”
change 更改

SPHINX_PATH := E:/Development/CMUSphinx

to

SPHINX_PATH := /cygdrive/e/Development/CMUSphinx

this will fix the error 这将修复错误

我用下面的链接大厦Pocketsphinx在Android在Windows https://sites.google.com/site/opiatefuchs/home/pocketsphinxandroiddemo但却忽略一个步骤@Hitesh提到关于JNI / Android.mk文件替换LOCAL_STATIC_LIBRARIES和我能够建立到最新的0.8版本..谢谢@Hitesh

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM