交叉编译自己并没有经验。于是 编译出来的各种库都不能用。但是记录以下失败信息,为下次做准备。
刚开始系统中对应的工具没有安装,因此安装如下。
首先,下载mac port。
然后安装tesseract需要的工具如下
sudo apt-get install autoconf automake libtool
sudo apt-get install libpng12-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install libtiff4-dev
sudo apt-get install zlib1g-dev
由于没有apt-get 通过port来安装
sudo port -v install automake +universal
sudo port -v install autoconf +universal
sudo port -v install libpng +universal
sudo port -v install libtool +universal
其他没有安装成功。
然后 编译 leptonica
./autogen.sh如果不执行这一句,则会
config.status: creating Makefile
config.status: error: cannot find input file: `api/Makefile.in'
./configure
make
sudo make install
sudo ldconfig //failed
然后同样安装tesseract
之后打算开始交叉编译。其实到这里 我已经出现了一个问题。当时没想到 安装之后 如果 不指定leptonica的库路径,那么编译tesseract时载入的库是从/usr/local/lib 中载入的。这是第一个隐患。
按照
http://tinsuke.wordpress.com/2011/11/01/how-to-compile-and-use-tesseract-3-01-on-ios-sdk-5/#more-52
http://www.devdiv.com/forum.php?mod=viewthread&tid=121509
http://knychardi.blogspot.com/2011/07/build-tesseract-ocr-with-iphone.html
http://www.cnblogs.com/xiaouisme/archive/2012/05/05/2485379.html
提供的脚本,然后可耻的一遍又一遍失败鸟。
第一次出现的问题呢,本机的Xcode 安装完 不是从Application里面启动,是类似虚拟光驱方式启动。要编译arm6(iphone1-3) arm7(iphone4 ipad) 的目标库,需要arm版本的gcc。本机自带是没有的,需要使用Xcode里面的。先把Xcode拷贝到Application中(也有好几个G)。i386是为模拟器准备的,如果只编译模拟器的库,那么本机的gcc就可以。,
然后我用了 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ 中的gcc
也编译出了leptonica 不知道这里有没有什么问题,脚本里面用的都是/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin 中的编译器
脚本用llvm-g++ 和 llvm-gcc ,
LD很重要。设置成/usr/bin/ld configure不会报错,但是 编译出来的库 好像会有问题ld: symbol(s) not found for architecture armv7。但是ld如果设置为脚本中 则编译会说c编译器报错 或者c++编译器报错。
生成的tesseract库大小有问题。 最后也没解决。
回头从基础开始研究研究交叉编译吧。
将三个库合成一个库的过程,也存在问题。。。。ORZ
如果不想每次去找共享资源,还是从头开始好好学习吧。~ 不然每次都这么折磨。肯定有好的方法的。
有个讨论页面 可做参考 记录如下 http://stackoverflow.com/questions/9039554/using-libcurl-on-ios-5-as-an-alternative-to-nsurlconnection