Prev / Next

2015-08-14 / PHP 5.6.12 を Solaris 11.2 上でビルドする

PHP 5.6 系が Solaris 11.2 上で Solaris Studio を使ってビルドできなくなっている。

具体的には、以下に書かれているように、zend_language_scanner のところでエラーになる。

- Installing PHP
  http://comments.gmane.org/gmane.comp.php.install/12380


requirements を確認しろと書かれているので、確認したところ、
PHP 5.6 系のビルドには bison 2.4 以降が必要だが、
Solaris 11.2 の bison は 2.3.5 なので、これがひっかっている可能性がある。

PHP: Installation on Unix systems - Manual
http://php.net/manual/en/install.unix.php

とりあえず、2.7.1 を --prefix=/usr/bison/2.7 でビルドして、
PHP の configure 時に以下のように指定する。

YACC='/usr/bison/2.7/bin/bison -y'


これでビルドしても、同様のエラーがでてしまうので、
bison のバージョンによるものではなさそう。

Solaris Studio を使うのを諦め、gcc でビルドしてみる。

gcc が c99 を理解できないといけないようなので、
'-std=c99' をつけたらエラーがでた。

'-std=gnu99' に変えたところ、同じエラーは出なくなった。

gnu99 は『c99 + gnu 拡張』ということらしい。

- -std=c99と-std=gnu99は同じ? - bugfix
  http://d.hatena.ne.jp/pneumaster/20081224/p1
- c - What's the difference between GNU99 and C99 (Clang)? - Stack Overflow
  http://stackoverflow.com/questions/5313536/whats-the-difference-between-gnu99-and-c99-clang

また、mod_php のビルドの際、Apache 関連の libtool から CFLAGS を持ってくるのか、
Solaris Studio 用の CFLAG '-mt' が設定されてしまう。

この '-mt' は ./configure で生成された Makefile 内に書かれているので、
sed などで '-mt' を削除してしまえば、ビルドは通るようになる。

ということで、Solaris 11.2 上でも gcc を使えば PHP 5.6 系をビルドできる
(ビルドしただけで動作は未確認)。

Referrer (Inside):
[2015-10-27-1] Solaris 上で PHP を --enable-intl 付きでビルドする
comments powered by Disqus