AIX下编译Redis

目录

基本环境

AIX:7.1

编译器xlc:12.1

Resia源码:2.8.13

直接编译肯定无法通过,xlc与gcc的编译选项不能完全通用,需要修改Makefile和一些源代码文件。

依赖库文件修改

hiredis

在src/Makefile中增加宏定义,主要是为了使用socket(?)。

-D__HIREDIS_FMACRO_H -D_BSD_SOURCE -DAF_LOCAL=AF_UNIX

修改DEBUG选项,去掉-ggdb,这项会被xlc解析出-b选项,可能会出现干扰。修改链接选项,将-shared改为-qmkshrobj。同时还需要修改-Wl,-soname,$(DYLIB_MINOR_NAME),该项生成一个链接文件,但我没找到xlc对应的选项,只好直接删掉,在make项目中手动加上ln命令。

修改.c.o项目的编译命令,将-std=c99改为-qlanglvl=stdc99,删掉-pedantic(没找到对应选项)。

lua

lua库的Makefile和src/Makefile文件中有针对aix的编译选项,需将PLAT设置为aix。下面修改只针对src/Makefile文件。

设置MYCFLAGS变量为-qlanglvl=stdc99,在aix项目中的CFLAGS中加入-qlanglvl=stdc99

源文件修改

同上,需要修改Makefile文件。

-std=c99修改为-qlanglvl=stdc99,删掉DEBUG中的-ggdb。修改链接命令,将FINAL_LDFLAGS-rdynamic修改为-bdynamic,将FINAL_LIBS修改为-lpthread

redis的Makefile中只有简单的install命令,但我没有系统权限,所以只好将所有的install命令都改成cp。

编译

使用gmake编译,gmake install安装,可以正常使用。不过系统中没有tcl,无法完成测试。

参考资料

AIX下编译redis代码

附注

尝试在AIX下编译软件是个既无趣又浪费时间的事情,以后还是少费时间在这上面,多做些有意义的事情。