下载libevent-2.1.8-stable、 memcached-1.3.0.tar.gz或者 memcached-1.5.9.tar.gz (这个新的不会报下面1.3.0的那个错误)
1、libevent
tar zxvf libevent.tar.gz
cd libevent-2.1.8-stable/
./configure --prefix=/usr/local/memcache/libevent
make && make install
2、memcache
tar zxvf memcached-1.3.0.tar.gz
cd memcached-1.3.0
./configure --prefix=/usr/local/memcache/ --with-libevent=/usr/local/memcache/libevent/
make && make install
[root@localhost memcached-1.3.0]# make && make install
make all-recursive
make[1]: Entering directory `/usr/local/src/memcached-1.3.0'
Making all in doc
make[2]: Entering directory `/usr/local/src/memcached-1.3.0/doc'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/src/memcached-1.3.0/doc'
make[2]: Entering directory `/usr/local/src/memcached-1.3.0'
if gcc -DHAVE_CONFIG_H -I. -I. -I. -DNDEBUG -I/usr/local/memcache/libevent//include -g -O2 -MT memcached-memcached.o -MD -MP -MF ".deps/memcached-memcached.Tpo" -c -o memcached-memcached.o `test -f 'memcached.c' || echo './'`memcached.c; \
then mv -f ".deps/memcached-memcached.Tpo" ".deps/memcached-memcached.Po"; else rm -f ".deps/memcached-memcached.Tpo"; exit 1; fi
memcached.c: In function ‘add_iov’:
memcached.c:731:30: error: ‘IOV_MAX’ undeclared (first use in this function)
if (m->msg_iovlen == IOV_MAX ||
^
memcached.c:731:30: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [memcached-memcached.o] Error 1
make[2]: Leaving directory `/usr/local/src/memcached-1.3.0'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/memcached-1.3.0'
make: *** [all] Error 2
解决方法:
注释两行内容即可
vim memcached.c
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
/* #if defined(__FreeBSD__) || defined(__APPLE__) */
# define IOV_MAX 1024
#endif
/* #endif */
make && make install
#这次可以了
#启动memcache
[root@localhost memcached-1.3.0]# /usr/local/memcache/bin/memcached -d -l 192.168.121.128 -p 11211 -m 128 -u root/usr/local/memcache/bin/memcached: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
#查看memcached 依赖库的路径
[root@localhost memcached-1.3.0]# LD_DEBUG=libs /usr/local/memcache/bin/memcached -v
10064: find library=libevent-2.1.so.6 [0]; searching
10064: search cache=/etc/ld.so.cache
10064: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64 (system search path)
10064: trying file=/lib64/tls/x86_64/libevent-2.1.so.6
10064: trying file=/lib64/tls/libevent-2.1.so.6
10064: trying file=/lib64/x86_64/libevent-2.1.so.6
10064: trying file=/lib64/libevent-2.1.so.6
10064: trying file=/usr/lib64/tls/x86_64/libevent-2.1.so.6
10064: trying file=/usr/lib64/tls/libevent-2.1.so.6
10064: trying file=/usr/lib64/x86_64/libevent-2.1.so.6
10064: trying file=/usr/lib64/libevent-2.1.so.6
10064:
/usr/local/memcache/bin/memcached: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
#创建软链接 映射到lib64里面
[root@localhost memcached-1.3.0]# ln -s /usr/local/memcache/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
[root@localhost memcached-1.3.0]# /usr/local/memcache/bin/memcached -d -l 192.168.121.128 -p 11211 -m 128 -u root
到此可以了