为iOS项目编译libtiff以包含64位架构

时间:2015-05-30 22:42:10

标签: ios objective-c c xcode

我有一个iOS应用更新到最新的SDK8.3,我使用的是最新版本的Xcode。我的应用程序使用libtiff将图像(PNG格式)转换为TIFF格式。我遇到的问题是我需要向App Store提交一个新版本,并且需要包含64位架构。我项目中的libtiff库很旧,我必须更新到最新版本。

我从官方下载站点(ftp.remotesensing.org)下载了libtiff 4.0.3,但我无法为所需的架构构建它,我收到错误。我读过this post但是有点过时了,我认为Apple改变了Xcode 6中的工具链,与Xcode 5或Xcode 4相比。

我不是gcc / llvm工具链的专家,我在这里有点迷失。我只需要在我的Xcode项目中使用tiff库并成功编译它。我自己试图建立这个库,但它只是为OS X而构建,我需要iOS。

关于iOS中TIFF的文档很少,我更喜欢使用PNG,但出于商业原因,我需要使用TIFF。有没有人成功地将libtiff编译成胖二进制文件以包含5个必需的体系结构(i386,x86_64,arm64,armv7,armv7s)?

我只需要tiff转换但没有jpg压缩,所以我猜我不需要jpeg库。

1 个答案:

答案 0 :(得分:2)

我有类似的问题,但幸运的是我找到了Github project。只需按照说明操作即可构建库。首先构建libjpg因为是生命的依赖。

使用终端并转到已下载项目的文件夹,在我的情况下是liftiff-ios-master,并按此顺序运行这两个脚本。

./build-jpg.sh
./build-tiff.sh

liftiff-ios-master/dependencies文件夹中完成后,您会找到两个文件夹,includelib以及所有必需的文件。

在Xcode中只需将以下文件复制到项目中(这些只是libtiff的必要文件,除非需要jpeg压缩支持,否则无需复制jpeg库文件):

libtiff files

并验证liftiff.a是否已添加到目标中Link Binary With Libraries标签的Build Phases部分。

在你的.h或.m文件中只包括:

#import <tiffio.h>

编译并运行。确保Architectures的设置Build Settings设置为Standard architectures (armv7, arm64)

要验证liftiff.a是否具有所有所需的体系结构,请在其文件夹和终端中使用:

$ file libtiff.a
libtiff.a: Mach-O universal binary with 5 architectures
libtiff.a (for architecture armv7):     current ar archive random library
libtiff.a (for architecture armv7s):    current ar archive random library
libtiff.a (for architecture i386):      current ar archive random library
libtiff.a (for architecture x86_64):    current ar archive random library
libtiff.a (for architecture arm64):     current ar archive random library