[PHP-users 11574] Re: gd のコンパイル

桜井 厚 php-users@php.gr.jp
Tue, 19 Nov 2002 11:57:47 +0900


On Mon, 18 Nov 2002 17:12:07 +0900
fumitaka miyazato <fumi@ryucom.ne.jp> wrote:

> 皆さんこんにちは,宮里と申します。
> 
>   アーカイブを検索したところ,同様の質問が過去に出されていましたが,
>   解決方法がよく解らなかったため,質問させていただきます。
> 
>   gd の組み込みがうまく行かなくて困っています。
>   具体的には,PHP のコンパイル時に以下のエラーが出ます。

私も困っていました。

>     gd.c:92: conflicting types for `gdIOCtx'
>     /usr/local/include/gd_io.h:18: previous declaration of `gdIOCtx'
> 
>   前の投稿では,「古いバージョンの gd が同居していたため」
>   となっていたので古い(と思われる)gd 関連ファイルを
>   削除しましたが,うまく行きませんでした。
>   どれが gd 関連のファイルなのでしょう?
>   一応 /usr/local/include と /usr/local/lib で,
>   ls *gd* して出てきたファイルで日付の古いものを削除しましたが…。
>   どなたかお助けいただけると幸いです。よろしくお願いいたします。

古いバージョンは /usr/includeに無いでしょうか?Solarisなので無いのでしょ
うか?当方はRedhat8のため、/usr/includeに既にありました。

ところでそのあたり(gdIOCtx)でbugがあるようで、コンパイルに失敗することが
あります。ここ(php-users)で聞こうかとも思ったのですが、ソースを修正する
ことでコンパイルが通ったので、ご参考までに書いておきます。

/usr/local/include/gd_io.h:
> typedef struct gdIOCtx {
>         int     (*getC)(struct gdIOCtx*);
>         int     (*getBuf)(struct gdIOCtx*, void*, int);
>         void     (*putC)(struct gdIOCtx*, int);
>         int     (*putBuf)(struct gdIOCtx*, const void*, int);
>         int     (*seek)(struct gdIOCtx*, const int);
>         long    (*tell)(struct gdIOCtx*);
>         void    (*gd_free)(struct gdIOCtx*);
> } gdIOCtx;

このようにmemberにgd_freeはありますが、freeはありません。従って、member
freeが無いというエラーが出たためgd_ctx.c, gd.cを以下のように修正しました。

'->free' これを '->gd_free' このように。

なお、php-4.2.2 及び php-4.3.0pre2です。

-- 
桜井 厚 <sakurai@penguin-club.org>