PHP에서 snappy 압축을 해보고 싶어서 php-ext-snappy 라는 extension을 빌드하는데, 

phpize, ./confugre 까지 하고 make 하는데 아래와 같은 에러 발생.

/home/bloodguy/src/php-ext-snappy/snappy.c:30: error: ‘ZEND_FE_END’ undeclared here (not in a function)

make: *** [snappy.lo] Error 1


좀 뒤져보니까 ZEND_FE_END(PHP_FE_END)가 PHP 5.3.7 버전 이상부터 define되어 있는데,

내가 빌드하려는 PHP는 5.3.5였다.


해결법은 PHP 버전을 올리거나,

아니면 나처럼 PHP는 그대로 두고 싶은 경우 빌드할 extension 소스코드에 저걸 define 해주면 된다.


PHP 5.3.6 이전 버전까지는 zend_function_entry 지정시 마지막에 {NULL, NULL, NULL}로 그냥 지정했는데,

5.3.7 부터는 저걸 ZEND_FE_END로 define 해놨다. (정확한 값은 {NULL, NULL, NULL, 0, 0})


그러니까 저 부분을 그냥 {NULL, NULL, NULL, 0, 0} 으로 바꿔주거나 적당한 위치에 ZEND_FE_END를 define해주면 된다.

나는 그냥 snappy.c 파일 열어서 상단부분에 아래처럼 define 해주고 다시 시도해서 snappy.so를 뽑아내는데 성공했다.

#ifndef ZEND_FE_END
#define ZEND_FE_END {NULL, NULL, NULL, 0, 0}
#endif



[참조]

http://d.hatena.ne.jp/yoya/20130501/php

Posted by bloodguy
,