php+GD
PHPでなんだかグラフを書くウェブアプリをいれるとのこと。GDライブラリとPHPを組み合わせてみました。例によってビルドするたけでいろいろとトラブルが。
GDのコンパイル
gdをコンパイルリンク。configureのhelpを参照するとjpegサポートがどうのとか、iconvがどうのとかってのがいろいろと出てきますが、./configureでだいたいはデフォルトで有効になるのでこれだけでいいみたい。最初はこんなふうなconfigureをかけていました。
$ ./configure --with-png=/usr/local --with-freetype=/usr/local --with-jpeg=/usr/local --with-libiconv-prefix=/usr/local --with-xpm
これでmakeしてmake isntallすると、phpのconfigureでなんだかよくわからないことに。phpのconfigure時にこんなエラーがでます。
$ ./configure (略) Undefined first referenced symbol in file gdImageColorMatch ext/gd/gd.lo gdImageEllipse ext/gd/gd.lo gdImageAALine ext/gd/gd.lo gdImageRotate ext/gd/gd.lo gdImagePngCtx ext/gd/gd.lo gdImageAntialias ext/gd/gd.lo gdImageCreateFromPngCtx ext/gd/gd.lo gdImageCreateFromPng ext/gd/gd.lo ld: fatal: Symbol referencing errors. No output written to sapi/cli/php collect2: ld returned 1 exit status
ということで、簡単にconfigure。
$ ./configure $ /usr/local/bin/make # /usr/local/bin/make install
PHPのコンパイル
でもって、次にphpを再configureかけます。最初こんなかんじでgdをphpに見せようとしたんですが、
$ ./configure --with-gd
これだとphpにバンドルされているgdが有効になるだけなんですね。
php -iの出力で確認できます。
gd GD Support => enabled GD Version => bundled (2.0.28 compatible) GIF Read Support => enabled GIF Create Support => enabled PNG Support => enabled WBMP Support => enabled XBM Support => enabled
--with-gd=/usr/localってなことをつけないといけないみたい。ということでこんなかんじで。
$ ./configure --with-gd=/usr/local そのほかいっぱい
おっと、エラーです。やっぱりというかなんというか。
(前略) checking for gdImageSetTile in -lgd... no checking for gdImageEllipse in -lgd... no checking for gdImageSetBrush in -lgd... no checking for gdImageStringTTF in -lgd... no checking for gdImageStringFT in -lgd... no checking for gdImageStringFTEx in -lgd... no checking for gdImageColorClosestHWB in -lgd... no checking for gdImageColorResolve in -lgd... no checking for gdImageGifCtx in -lgd... no checking for gdCacheCreate in -lgd... no checking for gdFontCacheShutdown in -lgd... no checking for gdFreeFontCache in -lgd... no checking for gdNewDynamicCtxEx in -lgd... no checking for gdImageCreate in -lgd... no configure: error: GD build test failed. Please check the config.log for details.
config.logを覗くとこんなの。
configure:40565: gcc -o conftest -g -O2 -D_POSIX_PTHREAD_SEMANTICS -R/usr/local /lib -L/usr/local/lib -R/usr/ucblib -L/usr/ucblib -R/usr/local/lib/gcc/sparc-su n-solaris2.9/4.1.1 -L/usr/local/lib/gcc/sparc-sun-solaris2.9/4.1.1 -R/usr/local/ lib -L/usr/local/lib -R/usr/X11R6/lib -L/usr/X11R6/lib conftest.c -lgd -lgd -lf reetype -lX11 -lXpm -lpng -lz -ljpeg -lz -lresolv -lm -ldl -lnsl -lsocket -lgcc 1>&5 Undefined first referenced symbol in file libiconv_close /usr/local/lib/libgd.so libiconv_open /usr/local/lib/libgd.so libiconv /usr/local/lib/libgd.so ld: fatal: Symbol referencing errors. No output written to conftest collect2: ld returned 1 exit status configure: failed program was:
libiconvが見えないみたい。仕方がないのでLDFLAGS環境変数を定義してあげます。
$ export LDFLAGS=-liconv $ ./configure --(略 $ /usr/local/bin/make # /usr/local/bin/make install $ php -i gd GD Support => enabled GD Version => 2.0 or higher FreeType Support => enabled FreeType Linkage => with freetype GIF Read Support => enabled GIF Create Support => enabled JPG Support => enabled WBMP Support => enabled
うまくいったようです。ここを参照しました。