适用于 iOS 的 leptonica 1.69 交叉编译(armv7、armv7s 和 arm64)
Posted
技术标签:
【中文标题】适用于 iOS 的 leptonica 1.69 交叉编译(armv7、armv7s 和 arm64)【英文标题】:leptonica 1.69 crosscompile for iOS (armv7, armv7s and arm64) 【发布时间】:2014-06-12 10:59:08 【问题描述】:我尝试为 armv7、armv7s 和 arm64 交叉编译 leptonica 1.69。
对于模拟器(i386、x86_64),我使用这些设置并且效果很好:
export ios_BASE_SDK="7.1"
export IOS_DEPLOY_TGT="6.1"
export TOOLCHAIN=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
export DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
export SDKROOT=$DEVROOT/SDKs/iPhoneSimulator$IOS_BASE_SDK.sdk
export CFLAGS="-arch x86_64 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"
export CPP=$TOOLCHAIN/usr/bin/cpp
export CXX=$TOOLCHAIN/usr/bin/c++
export CXXCPP=$TOOLCHAIN/usr/bin/cpp
export CC=$TOOLCHAIN/usr/bin/cc
export LD=$TOOLCHAIN/usr/bin/ld
export AR=$TOOLCHAIN/usr/bin/ar
export AS=$TOOLCHAIN/usr/bin/as
export NM=$TOOLCHAIN/usr/bin/nm
export RANLIB=$TOOLCHAIN/usr/bin/ranlib
export LDFLAGS="-L$SDKROOT/usr/lib/"
export CPPFLAGS="-no-cpp-precomp -I$SDKROOT/usr/include/"
export CXXFLAGS=$CFLAGS
然后调用configure
./configure --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --without-libtiff --libdir=$PWD/lib/nodebug
现在要为 arm 构建它,我尝试使用以下设置:(将 -arch 添加到 CFLAGS 和 CPPFLAGS,设置 SDK 根目录并添加 --host=x86_64)
export DEVROOT=/Applications/Xcode.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/"
export CPPFLAGS="-arch armv7 -no-cpp-precomp -I$SDKROOT/usr/include/"
./configure --host=x86_64 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --without-libtiff --libdir=$PWD/lib/nodebug
但不知何故,cpp 不起作用。配置日志显示以下内容:
configure:5841: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp -arch armv7 -no-cpp-precomp -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/ conftest.c
clang: error: no input files
任何人有什么想法有什么问题吗?或者知道如何进一步调试?
【问题讨论】:
【参考方案1】:我的编译器、预处理器等路径似乎有问题。仅使用路径中的默认路径即可。所以删除以下部分解决了我的问题:
export CPP=$TOOLCHAIN/usr/bin/cpp
export CXX=$TOOLCHAIN/usr/bin/c++
export CXXCPP=$TOOLCHAIN/usr/bin/cpp
export CC=$TOOLCHAIN/usr/bin/cc
export LD=$TOOLCHAIN/usr/bin/ld
export AR=$TOOLCHAIN/usr/bin/ar
export AS=$TOOLCHAIN/usr/bin/as
export NM=$TOOLCHAIN/usr/bin/nm
export RANLIB=$TOOLCHAIN/usr/bin/ranlib
export LDFLAGS="-L$SDKROOT/usr/lib/"
【讨论】:
如果您能够为 arm64 构建它,您可以在某处共享二进制文件吗?以上是关于适用于 iOS 的 leptonica 1.69 交叉编译(armv7、armv7s 和 arm64)的主要内容,如果未能解决你的问题,请参考以下文章
扫描名片 Tesseract 和 Leptonica iOS