【发布时间】:2014-04-09 05:44:16
【问题描述】:
我使用依赖于 zlib 的开源渲染库 (Ogre3D)。
在 XCode5 中,我注意到在为 iOS 构建时,如果 ARCHS 设置指示 64 位(arm64)架构,zlib 将不会构建。
我收到与 LSEEK 宏、read 和 write 函数相关的“隐式函数声明”错误。我在 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() 我不知道。
【问题讨论】:
-
我们正在使用官方的 zlib 库(截至昨天的版本为 1.2.8),但我们有一个修改过的
CMakeList.txt文件,其中很多内容都被删除了。也许将我们的与官方 zlib 库中的进行比较,以检查是否有一些必须添加的东西才能在 arm64 上编译。 -
“我们”是指 Ogre3D,对吧?我没有意识到使用了自定义版本。
-
是的,我所说的“我们”是指 Ogre3D(或者更具体地说,是我所属的 Ogre3D 开发团队)。应该更清楚,对不起。再说一遍:源码是正式版,只是CMakeList.txt不同。
-
另外:您是否尝试手动定义
_LARGEFILE64_SOURCE并设置_LFS64_LARGEFILE-0以检查使用lseek64是否可以解决问题?