操作系统: AIX 6.1 

前提:需有安装GCC,否则配置时GCC检查不会通过;

下载GCC的软件包:

ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/

gcc-4.2.0-3.aix6.1.ppc.rpm,
gcc-cplusplus-4.2.0-3.aix6.1.ppc.rpm,
libgcc-4.2.0-3.aix6.1.ppc.rpm,
libstdcplusplus-4.2.0-3.aix6.1.ppc.rpm,
libstdcplusplus-devel-4.2.0-3.aix6.1.ppc.rpm

(1)用ftp将上述五个rpm文件上传到/usr/opt/freeware/src /packages/SOURCES目录下

(2)以root身份在/usr/opt/freeware/src/packages/SOURCES执行命令
# rpm -ivh gcc-4.2.0-3.aix6.1.ppc.rpm
# rpm -ivh libgcc-4.2.0-3.aix6.1.ppc.rpm
# rpm -ivh libstdcplusplus-4.2.0-3.aix6.1.ppc.rpm
# rpm -ivh libstdcplusplus-devel-4.2.0-3.aix6.1.ppc.rpm
# rpm -ivh gcc-cplusplus-4.2.0-3.aix6.1.ppc.rpm

至此,成功安装GCC;

安装Memcache

使用文件
libevent-1.4.13-stable.tar.gz
memcached-1.4.5.tar.gz

编译 libevent-1.4.13-stable时候出现几个头文件错误,根据报错信息找到http-internal.h文件将其在的两行函数
nt evhttp_parse_firstline(struct evhttp_request *, struct evbuffer*); 
int evhttp_parse_headers(struct evhttp_request *, struct evbuffer*);

修改为以下内容:

enum message_read_status evhttp_parse_firstline(struct evhttp_request *, struct evbuffer*); 
enum message_read_status evhttp_parse_headers(struct evhttp_request *, struct evbuffer*);

 

接着又报select.c中fd_mask重复定义,打开select.c找到以下代码

/* This type is mandatory, but Android doesn't define it. */
typedef unsigned long fd_mask;

修改为:

/* This type is mandatory, but Android doesn't define it.
typedef unsigned long fd_mask;
*/

如果在安装过程中报regress_zlib.c错误,那说明系统没有安装zlib的软件包,需要下载并安装以下软件包:ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/zlib/

zlib-1.2.3-4.aix5.2.ppc.rpm
zlib-devel-1.2.3-4.aix5.2.ppc.rpm

经过上面的修改和软件安装,重新make,就可以正常通过了;

 

接下来编译memcached

编译过程中可能会报 thread_init 函数签名有冲突,修改下面3个文件

memcached.h
thread.c
memcached.c

将 thread_init 改成其他名字,如thread_init_memcached,这三个文件中一共有5个需要修改的地方,修改完成后重新编译,便可顺利通过;

启动:进入安装目录的bin文件

./memcached -d -m 256 -p 11211 -c 512 -P /tmp/memcached.pid  成功启动