freebsd 8.0 (に限らないみたいですが) に php 4.4.9 をインストールした際にコンパイルエラーが出てしまうようです。
–with-gd \
–with-freetype \
–with-freetype-dir=/usr/local/include/freetype2/freetype \
–with-png-dir=/usr/local/lib/ \
–with-jpeg-dir=/usr/local/lib/
gd と with-png-dir 辺りのオプションをつけているとエラーがでるようです。
エラー内容はこんな感じ
ext/gd/libgd/gd_png.o(.text+0xabc): In function `gdImageCreateFromPngCtx’:
/home/user/src/php-4.4.9/ext/gd/libgd/gd_png.c:139: undefined reference to `png_check_sig’
*** Error code 1
php bugを検索したところ一発で理解。libpngが1.4.0以上だと起こるらしいです。
> pkg_info | grep png
png-1.4.1_1 Library for manipulating PNG images
pngcrush-1.7.10 An optimizer for PNG files
というわけでパッチを作成。
こんな感じで大丈夫。
— php-4.4.9/ext/gd/libgd/gd_png.c.org 2010-04-28 17:00:15.000000000 +0900
+++ php-4.4.9/ext/gd/libgd/gd_png.c 2010-04-28 17:05:21.000000000 +0900
@@ -136,7 +136,7 @@
* have used slightly more general png_sig_cmp() function instead
*/
gdGetBuf(sig, 8, infile);
– if (!png_check_sig (sig, 8)) { /* bad signature */
+ if (png_sig_cmp (sig, 0, 8)) { /* bad signature */
return NULL;
}
解凍した php-4.4.9 の ディレクトリに、適当なファイルでpatchを作成して
patch < ./gd_png.patch(任意のファイル名)
でパッチ当て完了。
無事にコンパイルできました。
きのうかみらと、エラーするはずだった。