php 5.4.X编译安装时报gd相关的错误(gd_ctx.c)的解决办法

2 篇文章 0 订阅
在centos6.5编译安装/升级到php 5.4.X时,configure能正常通过,但是在make的时候提示:
In file included from /root/php-5.4.5/ext/gd/libgd/gd_compat.c:8:
/usr/local/jpeg/include/jpeglib.h:938: error: expected declaration specifiers or ‘...’ before ‘FILE’
/usr/local/jpeg/include/jpeglib.h:939: error: expected declaration specifiers or ‘...’ before ‘FILE’
make: *** [ext/gd/libgd/gd_compat.lo] Error 1

修改php-5.4.5/ext/gd/libgd/gd_compat.c 把png.h 改成绝对路径(这个在编译gd库的时候应该就碰到了,同样的路径即可)
并在# include <jpeglib.h> 前面增加一行 #include <stdio.h>   
修改后如下所示:

#include "php_config.h"
#ifdef HAVE_GD_PNG
/* needs to be first */
# include </usr/local/libpng/include/png.h>  //修改此处
#endif

#ifdef HAVE_GD_JPG
#include <stdio.h>    //修改此处
# include <jpeglib.h>
#endif
然后make clean
重新configure  、make 、make install 就可以了。

第二种情况:
configure能正常通过,make配置到最后报错:make: *** [ext/gd/gd.lo] Error 1
 
据说这个错误是php5.4的bug:
解决方法
vi /usr/local/gd2/include/gd_io.h  //安装gd库的路径
gdIOCtx结构中增加void *data;
如下:
==========================================================
 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 *);
  void (*data);         //添加的内容
}
gdIOCtx;
==========================================================
重新编译前最好执行如下:
 [root@localhost php-5.4.5]# make clean  //清除make

重新configure  、make 、make install 就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值