The script on internet is both too old and has issues on compiling. I enhance it and it's suitable for XCode 7.3.1
#!/bin/sh # build.sh GLOBAL_OUTDIR="`pwd`/dependencies" LOCAL_OUTDIR="./outdir" LEPTON_LIB="`pwd`/leptonica-1.73" TIFF_LIB="`pwd`/tiff-4.0.6" TESSERACT_LIB="`pwd`/tesseract-3.04.01" IOS_BASE_SDK="9.3" IOS_DEPLOY_TGT="9.3" setenv_all() { # Add internal libs export CFLAGS="-O2 $CFLAGS -I$GLOBAL_OUTDIR/include -L$GLOBAL_OUTDIR/lib" export TOOLCHAINROOT=/Applications/Xcode731.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain export CXX="$TOOLCHAINROOT/usr/bin/clang" export CC="$TOOLCHAINROOT/usr/bin/clang" export LD=$TOOLCHAINROOT/usr/bin/ld export AR=$TOOLCHAINROOT/usr/bin/ar export AS=$TOOLCHAINROOT/usr/bin/as export NM=$TOOLCHAINROOT/usr/bin/nm export RANLIB=$TOOLCHAINROOT/usr/bin/ranlib export LDFLAGS="-L$SDKROOT/usr/lib -L/usr/local/lib -lz" # export LDFLAGS="-L/usr/lib/ -L$GLOBAL_OURDIR/lib -lz" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS } setenv_arm6() { unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS export DEVROOT=/Applications/Xcode731.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer export SDKROOT=$DEVROOT/SDKs/iPhoneOS$IOS_BASE_SDK.sdk export CFLAGS="-arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/" setenv_all echo "compile arm6" } setenv_arm7() { unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS export DEVROOT=//Applications/Xcode731.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer export SDKROOT=$DEVROOT/SDKs/iPhoneOS$IOS_BASE_SDK.sdk export CFLAGS="-arch armv7 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/" setenv_all echo "compile arm7" } setenv_i386() { unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS export DEVROOT=/Applications/Xcode731.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer export SDKROOT=$DEVROOT/SDKs/iPhoneSimulator$IOS_BASE_SDK.sdk export CFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT" setenv_all echo "compile i386" } create_outdir_lipo() { echo "create_outdir_lipo" for lib_i386 in `find $LOCAL_OUTDIR/i386 -name "lib*\.a"`; do #lib_arm6=`echo $lib_i386 | sed "s/i386/arm6/g"` lib_arm7=`echo $lib_i386 | sed "s/i386/arm7/g"` lib=`echo $lib_i386 | sed "s/i386\///g"` #lipo -arch armv6 $lib_arm6 -arch armv7 $lib_arm7 -arch i386 $lib_i386 -create -output $lib lipo -arch armv7 $lib_arm7 -arch i386 $lib_i386 -create -output $lib done } merge_libfiles () { DIR=$1 LIBNAME=$2 cd $ DIR for i in `find . -name "lib*.a"`; do $AR -x $i done $AR -r $LIBNAME *.o rm -rf *.o __* cd - } ####################### # LIBTIFF ####################### #cd $TIFF_LIB #rm -rf $LOCAL_OUTDIR #mkdir -p $LOCAL_OUTDIR/arm6 $LOCAL_OUTDIR/arm7 $LOCAL_OUTDIR/i386 # ##make clean 2> /dev/null ##make distclean 2> /dev/null ##setenv_arm6 ##./configure --host=arm-apple-darwin6 --enable-shared=no --prefix=`pwd`/$LOCAL_OUTDIR/arm6 ##make -j4 ##make install # #make clean 2> /dev/null #make distclean 2> /dev/null #setenv_arm7 #./configure --host=arm-apple-darwin7 --enable-shared=no --prefix=`pwd`/$LOCAL_OUTDIR/arm7 #make -j4 #make install # #make clean 2> /dev/null #make distclean 2> /dev/null #setenv_i386 #./configure --host=x86_64 --enable-shared=no --prefix=`pwd`/$LOCAL_OUTDIR/i386 #make -j4 #make install # ## since we're installing the libraries into LOCAL_OUTDIR/<arch>/lib ## create_outdir_lipo will try to put them in LOCAL_OUTDIR/lib #mkdir -p $LOCAL_OUTDIR/lib #create_outdir_lipo #mkdir -p $GLOBAL_OUTDIR/include && cp -rvf $LOCAL_OUTDIR/i386/include/*.h $GLOBAL_OUTDIR/include #mkdir -p $GLOBAL_OUTDIR/lib && cp -rvf $LOCAL_OUTDIR/lib/lib*.a $GLOBAL_OUTDIR/lib #cd .. ####################### # LEPTONLIB ####################### #cd $LEPTON_LIB #rm -rf $LOCAL_OUTDIR #mkdir -p $LOCAL_OUTDIR/arm6 $LOCAL_OUTDIR/arm7 $LOCAL_OUTDIR/i386 ## ##make clean 2> /dev/null ##make distclean 2> /dev/null ##setenv_arm6 ##./configure --host=arm-apple-darwin6 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --with-libtiff ##make -j4 ##cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/arm6 # #make clean 2> /dev/null #make distclean 2> /dev/null #setenv_arm7 #./configure --host=arm-apple-darwin7 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --with-libtiff #make -j4 #cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/arm7 # #make clean 2> /dev/null #make distclean 2> /dev/null #setenv_i386 #./configure --host=x86_64 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --with-libtiff #make -j4 #cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/i386 # #create_outdir_lipo #mkdir -p $GLOBAL_OUTDIR/include/leptonica && cp -rvf src/*.h $GLOBAL_OUTDIR/include/leptonica #mkdir -p $GLOBAL_OUTDIR/lib && cp -rvf $LOCAL_OUTDIR/lib*.a $GLOBAL_OUTDIR/lib #cd .. ####################### # TESSERACT-OCR (v3) ####################### cd $TESSERACT_LIB rm -rf $LOCAL_OUTDIR mkdir -p $LOCAL_OUTDIR/arm6 $LOCAL_OUTDIR/arm7 $LOCAL_OUTDIR/i386 #make clean 2> /dev/null #make distclean 2> /dev/null #setenv_arm6 #export LDFLAGS="$LDFLAGS -ltiff" #bash autogen.sh #echo $CC ##export LIBLEPT_HEADERSDIR=/usr/local/include #./configure --host=arm-apple-darwin6 --enable-shared=no LIBLEPT_HEADERSDIR=$GLOBAL_OUTDIR/include/ ##./configure --host=arm-apple-darwin6 --enable-shared=no --prefix=`pwd`/$LOCAL_OUTDIR/arm7/ --with-extra-libraries=/usr/local/lib LIBLEPT_HEADERSDIR=/usr/local/include #make -j4 #for i in `find . -name "lib*.a"`; do cp -rvf $i $LOCAL_OUTDIR/arm6; done #merge_libfiles $LOCAL_OUTDIR/arm6 libtesseract_all.a #echo "Buidl for arm6" make clean 2> /dev/null make distclean 2> /dev/null setenv_arm7 export LDFLAGS="$LDFLAGS -ltiff" bash autogen.sh export LIBLEPT_HEADERSDIR=/usr/local/include ./configure --host=arm-apple-darwin7 --enable-shared=no --prefix=/usr/local/ --with-extra-libraries=/usr/local/lib make -j4 for i in `find . -name "lib*.a" | grep -v arm`; do cp -rvf $i $LOCAL_OUTDIR/arm7; done merge_libfiles $LOCAL_OUTDIR/arm7 libtesseract_all.a echo "Buidl for arm7" make clean 2> /dev/null make distclean 2> /dev/null setenv_i386 export LDFLAGS="$LDFLAGS -ltiff" bash autogen.sh export LIBLEPT_HEADERSDIR=/usr/local/include ./configure --host=x86_64 --enable-shared=no --host=i386 --prefix=/usr/local/ --with-extra-libraries=/usr/local/lib make -j4 for i in `find . -name "lib*.a" | grep -v arm`; do cp -rvf $i $LOCAL_OUTDIR/i386; done merge_libfiles $LOCAL_OUTDIR/i386 libtesseract_all.a echo "Buidl for i386" create_outdir_lipo mkdir -p $GLOBAL_OUTDIR/include/tesseract tess_inc=( api/apitypes.h api/baseapi.h ccmain/thresholder.h ccstruct/publictypes.h ccutil/errcode.h ccutil/genericvector.h ccutil/helpers.h ccutil/host.h ccutil/ndminx.h ccutil/ocrclass.h ccutil/platform.h ccutil/tesscallback.h ccutil/unichar.h ) for i in "${tess_inc[@]}"; do cp -rvf $i $GLOBAL_OUTDIR/include/tesseract done mkdir -p $GLOBAL_OUTDIR/lib && cp -rvf $LOCAL_OUTDIR/lib*.a $GLOBAL_OUTDIR/lib make clean 2> /dev/null make distclean 2> /dev/null rm -rf $LOCAL_OUTDIR cd .. echo "Finished!"