php 5.4.18のコンパイルでエラー


8/15にリリースされたphp 5.4.18をビルドしたらエラーになったので、そのときのメモ。apache2.4系でphpを使おうとしてビルドしてたら以下のエラーが出た。

zend_language_parser.h:327:5: error: conflicting types for 'zendparse'

なんかzendparse関数の定義が変みたい。調べると今年の3月くらいに多分同じ問題でソースが修正されていた。ただ少し前の話でphp5.4.18は当然この修正も入っている…のにまたエラーがでるようになっている。何故だ。

よくわからないが、「YYTOKENTYPEが定義されてないのがダメなんだろ、じゃぁ適当に定義しちゃえばいいじゃない」というわけで以下の修正を行なった。

※./Zend/zend_language_parser.h を修正。

--- ./Zend/zend_language_parser.h.org 2013-08-14 15:04:57.000000000 +0900 +++ ./Zend/zend_language_parser.h 2013-08-18 22:45:57.715883266 +0900 @@ -40,6 +40,12 @@ extern int zenddebug; #endif +/* add */ +#ifdef ZTS +# define YYPARSE_PARAM tsrm_ls +# define YYLEX_PARAM tsrm_ls +#endif + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE

上記の修正後にビルドしたら成功した。修正方法が正しいかは不明だけど、とりあずapache上でphpも動いてるのでこれで様子見てます。

余談だけど、phpのbugsに同じエラーの報告が上がってたので次のバージョンでは修正されるんじゃないかな。多分。

[2013/8/21追記]
phpのbugsに上がっていたエラー報告が修正されたみたいです。修正のコミットはこちら。次のリリースではエラーにならなくなってると思います(確認してないけど)。

作成日:2013/08/18 23:23:09
トラックバック  ※トラックバックは承認後に表示されます。
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
名前:

タイトル:

コメント: