如何为arm64构建zlib

时间:2014-03-06 14:12:29

标签: ios xcode zlib ogre arm64

我使用的开源渲染库(Ogre3D)依赖于zlib。

在XCode5中,我注意到在构建iOS时,如果ARCHS设置指示64位(arm64)架构,则不会构建zlib。

我收到与LSEEK宏,readwrite函数相关的“隐式函数声明”错误。我在gzlib.c中查找了LSEEK

#if defined(_WIN32) && !defined(__BORLANDC__)
#  define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
#  define LSEEK lseek64
#else
#  define LSEEK lseek
#endif
#endif

我的猜测是错误的,但我不知道是什么。至于read()write()我没有任何线索。

2 个答案:

答案 0 :(得分:11)

尝试在gzguts.h中添加#include <unistd.h>

答案 1 :(得分:1)

在这种情况下最简单的解决方案是不要自己构建 zlib ,因为它已经预先编译了iOS SDK(也适用于arm64)。

这个latest commit也在官方的Ogre依赖存储库中修复它。

除此之外,this Ogre3D thread还有另一个选项:

  

使用 ARCHS = ARCHS_STANDARD_INCLUDING_64_BIT ,像zlip这样的项目失败了。当我将其更改为 ARCHS_STANDARD_32_64_BIT 时,他们构建了OK。我发现前者评估为“armv7 armv7s arm64”,后者目前评估为“armv7 armv7s”。所以我认为zlip不会为arm64构建。

这意味着Ogre3D部分是针对64位编译的,其中一些依赖项如 zlib 保持32位。