首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android NDK编译tesseract

android NDK编译tesseract
EN

Stack Overflow用户
提问于 2011-09-07 20:40:54
回答 3查看 4.2K关注 0票数 1

我正在尝试使用android ndk r5为android编译tesseract,tesseract的代码是通过检查http://code.google.com/p/tesseract-android-tools/获得的,我无法编译tesseract并得到错误。

代码语言:javascript
复制
Install        : libjpeg.so => libs/armeabi/libjpeg.so
make: *** No rule to make target `//cygdrive/e/DemoExamples_WorkSpace/tesseract-android-tools/jni/../external/leptonlib-1.66/src/adaptmap.c', needed b
y `/cygdrive/e/DemoExamples_WorkSpace/tesseract-android-tools/obj/local/armeabi/objs/lept//cygdrive/e/DemoExamples_WorkSpace/tesseract-android-tools/j
ni/../external/leptonlib-1.66/src/adaptmap.o'.  Stop.

请帮我解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2012-03-19 12:14:14

我也有同样的问题,我想我已经解决了。可能对那些遇到类似错误的人很有帮助:

在OSX上,我只更改了Android.mk文件,给出了绝对路径,如下所示

第一个:jni/Android.mk

代码语言:javascript
复制
TESSERACT_PATH := /Users/.../tesseract-android-tools/tesseract-android-tools/external/tesseract-3.00
LEPTONICA_PATH := /Users/.../tesseract-android-tools/tesseract-android-tools/external/leptonlib-1.66
LIBJPEG_PATH := /Users/.../tesseract-android-tools/tesseract-android-tools/external/libjpeg

然后:jni/com_googlecode_leptonica_android/Android.mk

代码语言:javascript
复制
REAL_LOCAL_PATH := /Users/.../tesseract-android-tools/tesseract-android-tools/jni/com_googlecode_leptonica_android

以及相应的jni/com_googlecode_tesseract_android/Android.mk

我认为这个问题是由以下命令返回的相对路径引起的:

代码语言:javascript
复制
$(call my-dir)

然后,我需要以超级用户身份运行ndk-build,所有这些都编译得很好。

票数 1
EN

Stack Overflow用户

发布于 2011-09-09 15:06:31

在makefile中搜索adaptmap。首先构建创建此模块的makefile。

票数 0
EN

Stack Overflow用户

发布于 2011-10-06 03:13:18

所以,我已经在windows7和windows xp上编译过了,但这是一个丑陋的变通办法。

基本的问题是"LOCAL_PATH :=“的值为空,我不知道为什么cygwin会有这个问题,所以你必须更改Android.mk文件的路径才能工作。

我将使用数字来引用Android.mk,我的jni路径是:

代码语言:javascript
复制
-jni
    Android.mk(1)
    Aplication.Mk
    -com_googlecode_tesseract_android(dir)
        Android.mk(2)
                tesseract(dir) 
    -com_googlecode_leptonica_android(dir)
        Android.mk(3)
                leptonlib(dir)
    -libjpeg
        Android.mk(4)

=================================

代码语言:javascript
复制
Android.mk(1)
Put tesseract and leptonica sources on googlecode subdirectories like this:

TESSERACT_PATH := $(call my-dir)/com_googlecode_tesseract_android/tesseract -- directory to source, change for respective name
LEPTONICA_PATH := $(call my-dir)/com_googlecode_leptonica_android/leptonlib -- directory to source, change for respective name
LIBJPEG_PATH := $(call my-dir)/libjpeg

=================================

代码语言:javascript
复制
Android.mk(2)

1 - Change:

LOCAL_PATH:= 

to

LOCAL_PATH:= $(call my-dir)

2 - Change:

BLACKLIST_SRC_FILES := \
  %endiantest.c \
  %freetype.c \
  %xtractprotos.c
LOCAL_SRC_FILES := \
  $(filter-out $(BLACKLIST_SRC_FILES),$(wildcard $(LEPTONICA_PATH)/src/*.c))

to

LOCAL_SRC_FILES := \
    leptonlib/src/adaptmap.c \
    leptonlib/src/affine.c \
    leptonlib/src/affinecompose.c \ ... continue (Put all the files on src directory, without files listed on blacklist).
Note: replace leptonlib for subrectory name of leptonlib source.


3- Change:

ifneq ($(TARGET_SIMULATOR),true)
LOCAL_SRC_FILES += \
  $(REAL_LOCAL_PATH)/stdio/open_memstream.c \
  $(REAL_LOCAL_PATH)/stdio/fopencookie.c \
  $(REAL_LOCAL_PATH)/stdio/fmemopen.c
LOCAL_C_INCLUDES += \
  $(REAL_LOCAL_PATH)/stdio
endif

# jni

LOCAL_SRC_FILES += \
  $(REAL_LOCAL_PATH)/box.cpp \
  $(REAL_LOCAL_PATH)/pix.cpp \
  $(REAL_LOCAL_PATH)/pixa.cpp \
  $(REAL_LOCAL_PATH)/utilities.cpp \
  $(REAL_LOCAL_PATH)/readfile.cpp \
  $(REAL_LOCAL_PATH)/writefile.cpp \
  $(REAL_LOCAL_PATH)/jni.cpp

LOCAL_C_INCLUDES += \
  $(REAL_LOCAL_PATH) \
  $(LEPTONICA_PATH)/src


to 

ifneq ($(TARGET_SIMULATOR),true)
LOCAL_SRC_FILES += \
  stdio/open_memstream.c \
  stdio/fopencookie.c \
  stdio/fmemopen.c
LOCAL_C_INCLUDES += \
  stdio
endif

# jni

LOCAL_SRC_FILES += \
  box.cpp \
  pix.cpp \
  pixa.cpp \
  utilities.cpp \
  jni.cpp

LOCAL_C_INCLUDES += \
  leptonlib/src

=================================

代码语言:javascript
复制
Android.mk(3)

1 - Change:

LOCAL_PATH:= 

to

LOCAL_PATH:= $(call my-dir)


2 - Change

On LOCAL_SRC_FILES change $(TESSERACT_PATH) to tesseract --Note: replace tesseract for subrectory name of tesseract source.

DON´T REPLACE $(TESSERACT_PATH) on LOCAL_C_INCLUDES only LOCAL_SRC_FILES.
DON´T REPLACE $(LEPTONICA_PATH) on LOCAL_C_INCLUDES.

3 - Change:

    In #jni

    LOCAL_SRC_FILES += \
      $(REAL_LOCAL_PATH)/tessbaseapi.cpp

    LOCAL_C_INCLUDES += \
      $(REAL_LOCAL_PATH) \
      $(TESSERACT_PATH)/api \
      $(LEPTONICA_PATH)/src

    to 

    LOCAL_SRC_FILES += \
      tessbaseapi.cpp

    LOCAL_C_INCLUDES += \
      $(LOCAL_PATH) \
      $(TESSERACT_PATH)/api \
      $(LEPTONICA_PATH)/src

对于在windows7、windows xp、Mac和Ubuntu上工作的我来说。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7334040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档