当前位置: 首页 > news >正文

mac上编译redis ,报错fstat64

mac上编译redis ,报错fstat64

                                void
replication.c:1289:31: error: variable has incomplete type 'struct stat64'struct redis_stat buf;^
replication.c:1289:20: note: forward declaration of 'struct stat64'struct redis_stat buf;^
./config.h:45:20: note: expanded from macro 'redis_stat'
#define redis_stat stat64^
replication.c:1336:21: error: call to undeclared function 'fstat64'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

因为 macOS 的 fstat 函数已经默认支持大文件(即自动处理大于 2GB 的文件),因此不需要使用 fstat64

查看 src/config.h文件

可以看到关于fstat64的引用

#if defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6)
#define redis_fstat fstat64
#define redis_stat stat64
#else
#define redis_fstat fstat
#define redis_stat stat
#endif

这里是走了if分支,只要修改代码,让走else分支就可以了。

if 中主要定义了两个条件,__APPLE__mac上肯定是存在的,另一个条件MAC_OS_X_VERSION_10_6不存在,就走了if分支。因此我们定义MAC_OS_X_VERSION_10_6就可以走到else分支了。

解决方法就是在这段代码的上面增加MAC_OS_X_VERSION_10_6的定义

#define MAC_OS_X_VERSION_10_6
#if defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6)
#define redis_fstat fstat64
#define redis_stat stat64
#else
#define redis_fstat fstat
#define redis_stat stat
#endif

http://www.mrgr.cn/news/13648.html

相关文章:

  • 网络安全售前入门05安全服务——渗透测试服务方案
  • Kafka篇之清理或创建topic
  • 如何将ip地址随机更换
  • VS2022 QT环境显示中文乱码问题
  • Qt与SVG
  • 【图像】灰度图与RGB图像的窗宽、窗位的值范围二三问
  • 数据结构之 “单链表“
  • vue3编程 -动态多开模态框实现方案
  • MySQL中的事务
  • [英语单词] unsound
  • 19行为型设计模式——备忘录模式
  • Uniapp 调用aar、jar包
  • 学习笔记——Redis基础
  • ★ 算法OJ题 ★ 力扣1089 - 复写零
  • Java 结合elasticsearch-ik分词器,实现评论的违规词汇脱敏等操作
  • 2024.8.28 作业
  • Spring:浅谈对Spring的认识
  • 【微信小程序】全局数据共享 - MobX
  • 【学习笔记】 陈强-机器学习-Python-Ch13 提升法(1)
  • 云计算环境下的数据治理