在IBM AIX平台下编译redis还是比较顺利的. 我没有直接使用官方的Makefile,参考了下官方Makefile中的编译依赖关系,按照平时常用的格式自己写了个Makefile文件。

首先,编译hiredis时,主要在编译命令中定义了三个宏:__HIREDIS_FMACRO_H_BSD_SOURCEAF_LOCAL=AF_UNIX,编译就顺利通过了。

-D__HIREDIS_FMACRO_H -D_BSD_SOURCE -DAF_LOCAL=AF_UNIX 

编译服务器代码,稍微麻烦点,因为编译过程中会提示

"redis.h", line 502.9: 1506-275 (S) Unexpected text integer constant encountered.

这是因为,redis.h中结构体redisServer用到了一个名为hz的成员,而hz这玩意在aix平台下被定义过。至此,编译就报错了。

我在文件中加了#undef hz,解决了。

同样,编译服务器代码,采用相同的思路,这次添加了四个宏定义,如下:

-D_XOPEN_SOURCE_EXTENDED=1 -D_ISOC99_SOURCE -D_ALL_SOURCE -DAF_LOCAL=AF_UNIX

以上修改后,redis的服务器代码和客户端代码的编译顺利通过!