[FYI] GD+php makeエラー回避方法


php上でGDを利用したい場合、–with-gd と./configure に記載したりしますが、GDのバージョンによっては、phpのmake中にコンパイルエラーを起こす事があります。

例えば、php-4.3.4 + GD 2.0.33 の場合・・・

./configure \
–with-apache=../apache_1.3.29 \
–prefix=/usr/local/php \
–enable-track-vars \
–with-mysql=/usr/local/mysql \
–enable-mbstring \
–enable-mbstr-enc-trans \
–enable-mbregex \
–with-sablot \
–enable-xslt \
–with-xslt-sablot \
–with-openssl \
–with-xml \
–with-zlib \
–with-dom \
–with-dom-xslt \
–with-dom-exslt \
–with-gd \
–with-freetype \
–with-freetype-dir=/usr/local/include/freetype2/freetype \
–with-png \
–with-jpeg

こんなオプションをつけてコンパイルしようとすると・・・

/usr/local/include/freetype2/freetype/freetype.h:20: #error “`ft2build.h’ hasn’t been included yet!”
/usr/local/include/freetype2/freetype/freetype.h:21: #error “Please always use macros to include FreeType header files.”
/usr/local/include/freetype2/freetype/freetype.h:22: #error “Example:”
/usr/local/include/freetype2/freetype/freetype.h:23: #error ” #include
/usr/local/include/freetype2/freetype/freetype.h:24: #error ” #include FT_FREETYPE_H”
*** Error code 1

というエラーがでてしまいます。freetype.hは直接includeすんな!という事らしいです。
なので、回避するために gdft.c を編集します。

php-4.*.*/ext/gd/libgd/gdft.c

ファイルは上記に存在します。

#include “gdcache.h”
#include “freetype/freetype.h”
#include “freetype/ftglyph.h”

#include “gdcache.h”
#include
#include FT_FREETYPE_H
#include “freetype/ftglyph.h”

これでmakeが通るはずです。ちなみに、php-4.4.1では修正されているようで、上記編集をしなくてもコンパイルは通りました。

以下、確認です。

/usr/local/php/bin/php -i | less

gd

GD Support => enabled
GD Version => bundled (2.0.15 compatible)
FreeType Support => enabled
FreeType Linkage => with freetype
GIF Read Support => enabled
PNG Support => enabled
WBMP Support => enabled
XBM Support => enabled

freetypeがGD上でenableになっています。

コメントを残す

メールアドレスが公開されることはありません。