失败的交叉编译纪录

交叉编译自己并没有经验。于是 编译出来的各种库都不能用。但是记录以下失败信息,为下次做准备。

刚开始系统中对应的工具没有安装,因此安装如下。

首先,下载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






你可能感兴趣的:(失败的交叉编译纪录)