PHP libmemcachedのビルドがうまくできなかった
PHPでlibmemcachedを利用するためのライブラリにこんなのがある。
GREE Engineering
これを使うためにビルドしたらmakeで失敗した。
その時のログがこれ。
/bin/sh /usr/local/src/libmemcached-0.2.0/libtool --mode=compile cc -I. -I/usr/local/src/libmemcached-0.2.0 -DPHP_ATOM_INC -I/usr/local/src/libmemcached-0.2.0/include -I/usr/local/src/libmemcached-0.2.0/main -I/usr/local/src/libmemcached-0.2.0 -I/usr/local/php-5.4.13/include/php -I/usr/local/php-5.4.13/include/php/main -I/usr/local/php-5.4.13/include/php/TSRM -I/usr/local/php-5.4.13/include/php/Zend -I/usr/local/php-5.4.13/include/php/ext -I/usr/local/php-5.4.13/include/php/ext/date/lib -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/libmemcached-0.2.0/libmemcached.c -o libmemcached.lo mkdir .libs cc -I. -I/usr/local/src/libmemcached-0.2.0 -DPHP_ATOM_INC -I/usr/local/src/libmemcached-0.2.0/include -I/usr/local/src/libmemcached-0.2.0/main -I/usr/local/src/libmemcached-0.2.0 -I/usr/local/php-5.4.13/include/php -I/usr/local/php-5.4.13/include/php/main -I/usr/local/php-5.4.13/include/php/TSRM -I/usr/local/php-5.4.13/include/php/Zend -I/usr/local/php-5.4.13/include/php/ext -I/usr/local/php-5.4.13/include/php/ext/date/lib -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/libmemcached-0.2.0/libmemcached.c -fPIC -DPIC -o .libs/libmemcached.o /usr/local/src/libmemcached-0.2.0/libmemcached.c: In function ‘_php_libmemcached_error’: /usr/local/src/libmemcached-0.2.0/libmemcached.c:431: error: ‘memcached_st’ has no member named ‘hosts’ /usr/local/src/libmemcached-0.2.0/libmemcached.c:433: error: ‘memcached_server_st’ has no member named ‘cached_errno’ /usr/local/src/libmemcached-0.2.0/libmemcached.c:433: error: ‘memcached_server_st’ has no member named ‘cached_errno’ /usr/local/src/libmemcached-0.2.0/libmemcached.c: In function ‘zif_memcached_gets’: /usr/local/src/libmemcached-0.2.0/libmemcached.c:515: 警告: passing argument 2 of ‘memcached_mget’ from incompatible pointer type /usr/local/include/libmemcached-1.0/get.h:54: note: expected ‘const char * const*’ but argument is of type ‘char **’ /usr/local/src/libmemcached-0.2.0/libmemcached.c:534: 警告: passing argument 2 of ‘_php_libmemcached_get_value’ discards qualifiers from pointer target type /usr/local/src/libmemcached-0.2.0/libmemcached.c:305: note: expected ‘char *’ but argument is of type ‘const char *’ /usr/local/src/libmemcached-0.2.0/libmemcached.c: In function ‘zif_memcached_server_list’: /usr/local/src/libmemcached-0.2.0/libmemcached.c:1165: 警告: initialization makes pointer from integer without a cast /usr/local/src/libmemcached-0.2.0/libmemcached.c: In function ‘zif_memcached_mget’: /usr/local/src/libmemcached-0.2.0/libmemcached.c:1275: 警告: passing argument 2 of ‘memcached_mget’ from incompatible pointer type /usr/local/include/libmemcached-1.0/get.h:54: note: expected ‘const char * const*’ but argument is of type ‘char **’ make: *** [libmemcached.lo] エラー 1
libmemecachedも入ってるし、何が行けないんだろうと結構悩んだ。
とりあえず「libmemcached.lo」ってなんだろう、と思ってディレクトリ内のファイルを見ていたら「libmemcached.loT」というファイルを見つけた。
まさか・・・とおもってこれをlibmemcached.loにリネームしたらmakeが通った。
ここで生成されるファイル名が間違ってるとは思わなかったよ。