为 iOS 项目编译 libtiff 以包含 64 位架构
Posted
技术标签:
【中文标题】为 iOS 项目编译 libtiff 以包含 64 位架构【英文标题】:Compile libtiff for iOS project to include 64bit architecture 【发布时间】:2015-05-30 22:42:10 【问题描述】:我有一个更新到最新 SDK8.3 的 ios 应用程序,并且我使用的是最新版本的 Xcode。我的应用程序使用 libtiff 将图像(PNG 格式)转换为 TIFF 格式。我遇到的问题是我需要向 App Store 提交一个新版本,并且需要合并 64 位架构。我项目中的 libtiff 库很旧,我必须更新到最新版本。
我已经从官方下载站点 (ftp.remotesensing.org) 下载了 libtiff 4.0.3,但我无法为所需的架构构建它,我收到错误消息。我已经阅读了this post,但它有点过时了,我认为与 Xcode 5 或 Xcode 4 相比,Apple 更改了 Xcode 6 中的工具链。
我不是 gcc / llvm 工具链方面的专家,在这里我有点迷失了。我只需要我的 Xcode 项目中的 tiff 库并成功编译它。我尝试自己构建库,但它只为 OS X 构建,我需要 iOS。
iOS 中有关 TIFF 的文档很少,我更喜欢使用 PNG,但出于商业原因,我需要使用 TIFF。有没有人成功地将 libtiff 编译成一个胖二进制文件以包含 5 个必需的架构(i386、x86_64、arm64、armv7、armv7s)?
我只需要tiff转换但没有jpg压缩,所以我猜我不需要jpeg库。
【问题讨论】:
【参考方案1】:我也遇到过类似的问题,但幸运的是我发现了这个Github project。只需按照说明构建库即可。首先构建libjpg,因为是liftiff的依赖。
使用终端进入下载项目的文件夹,在我的例子中是liftiff-ios-master
,并运行这两个脚本,并按此顺序。
./build-jpg.sh
./build-tiff.sh
在 liftiff-ios-master/dependencies
文件夹中完成后,您会发现两个文件夹,include
和 lib
,其中包含所有必要的文件。
在 Xcode 中只需将以下文件复制到您的项目中(这些只是libtiff
的必要文件,除非您需要 jpeg 压缩支持,否则无需复制 jpeg 库文件):
并确认liftiff.a
已添加到目标中Build Phases
选项卡的Link Binary With Libraries
部分。
在您的 .h 或 .m 文件中只需包含以下内容:
#import <tiffio.h>
编译并运行。确保您的Build Settings
的设置Architectures
设置为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
【讨论】:
以上是关于为 iOS 项目编译 libtiff 以包含 64 位架构的主要内容,如果未能解决你的问题,请参考以下文章
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9: undefined reference toTIFFIsTiled@LIBTIFF_4.0&