zoukankan      html  css  js  c++  java
  • 不重新编译PHP文件的情况下php GD库扩展库的编译安装(centos)

    gd-2.0.33.tar.gz http://www.boutell.com/gd/
    jpegsrc.v6b.tar.gz http://www.ijg.org/
    libpng-1.2.7.tar.tar http://sourceforge.net/projects/libpng/
    zlib-1.2.2.tar.gz http://sourceforge.net/projects/zlib/

    freetype-2.1.9.tar.gzhttp://sourceforge.net/projects/freetype/

    1、安装 zlib 
    wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz 
    tar -zxf zlib-1.2.3.tar.gz 
    cd zlib-1.2.3 
    ./configure --prefix=/usr/local/zlib 
    make 
    make install 
     
    2、安装 jpeg 
    wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/jpeg.tar.gz
    安装前先创建jpeg安装文件所需(如下)目录,防止提示类似“无法创建一般文件‘/usr/local/jpeg/***’: 没有那个文件或目录" 的错误
    mkdir /usr/local/jpeg
    mkdir  /usr/local/jpeg/bin 
    mkdir  /usr/local/jpeg/lib 
    mkdir  /usr/local/jpeg/include 
    mkdir  /usr/local/jpeg/man 
    mkdir  /usr/local/jpeg/man1 
    mkdir  /usr/local/jpeg/man/man1 
    tar -zxf jpeg.tar.gz 
    cd jpeg-6b 
    ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static 
    make 
    make install 
     
    安装完成提示: 
    Libraries have been installed in: 
    /usr/local/jpeg6/lib

    3、安装 libpng 

    wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/libpng-1.2.16.tar.gz 
    tar -zxf libpng-1.2.16.tar.gz 
    cd libpng-1.2.16 
    ./configure --prefix=/usr/local/libpng 
    make 
    make install

    4、安装 freetype 
    wget http://download.savannah.nongnu.org/releases/freetype/freetype-2.3.4.tar.gz 
    tar -zxf freetype-2.3.4.tar.gz 
    cd freetype-2.3.4 
    mkdir -p /usr/local/freetype 
    ./configure --prefix=/usr/local/freetype 
    make 
    make install

    5、安装 GD 
    wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/gd-2.0.33.tar.gz 
    tar -zxf gd-2.0.33.tar.gz 
    cd gd-2.0.33 
    mkdir -p /usr/local/gd2
    ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg/ --with-png=/usr/local/libpng/ --with-zlib=/usr/local/zlib/ --with-freetype=/usr/local/freetype/
    make 
    make install
    (如果出错见下文)
    6、集成PHP GD扩展 到PHP里
    切换到PHP源码包
    如果已经安装 php,建议通过追加编译安装

    进入“[php解压目录]/ext/gd”目录,执行如下命令: 
    [php安装目录]/bin/phpize 
    Java代码  
    ./configure --with-php-config=[php安装目录]/bin/php-config --with-jpeg=[jpeg-6b安装目录] --with-png=[libpng安装目录] --with-freetype=[freetype安装目录] --with-zlib=[zlib安装目录] --with-gd=[gd安装目录] 
    (如果出现未知配置项--with-png**,--with-freetype之类的错误 在配置项后面加上-dir参数即可:既修编译参数为: ./configure --with-php-config=[php安装目录]/bin/php-config --with-jpeg-dir=[jpeg安装目录] --with-png-dir=[libpng安装目录] --with-freetype-dir=[freetype安装目录] --with-zlib=[zlib安装目录] --with-gd=[gd安装目录] 即可
    )
    make  
    make install  
     
    安装成功后会在“[php安装目录]/lib/php/extensions/no-debug-non-zts-20060613”目录下生成gd.so文件, 
       然后cp [php安装目录]/lib/php/extensions/no-debug-non-zts-20060613/gd.so /opt/php/ext 
     
    修改php.ini文件加载gd组件,添加extension_dir=/opt/php/ext和extension=gd.so,如果有extension_dir=/opt/php/ext则不需要增加 
    Java代码  
    extension_dir=/opt/php/ext  
    extension=gd.so 


    ./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype --with-zlib-dir=/usr/local/zlib --with-gd=/usr/local/gd2

    执行编译安装
    make 
    make install
    具体操作流程如下:
    $ cd <php源码>/ext/gd
    $ /usr/local/php5/bin/phpize
    $ ./configure --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype --with-zlib-dir=/usr/local/zlib --with-php-config=/usr/local/php/bin/php-config
    $ make && make install
     修改php.ini
    $ make && make install
    添加extension=gd.so
     最后,重启apache


    可能出现的错误以及解决方法:

    编译GD库时如果出现以下错误:


     
    在./configure GD库,安装时出现了一个问题,下面是报错信息gd_png.c:16:53: error: png.h: No such file or directory
    gd_png.c:47: error: expected specifier-qualifier-list before ‘jmp_buf’
    gd_png.c:54: error: expected ‘)’ before ‘png_ptr’
    gd_png.c:82: error: expected ‘)’ before ‘png_ptr’
    gd_png.c:92: error: expected ‘)’ before ‘png_ptr’
    gd_png.c:98: error: expected ‘)’ before ‘png_ptr’
    gd_png.c: In function ‘gdImageCreateFromPngCtx’:
    gd_png.c:125: error: ‘png_byte’ undeclared (first use in this function)
    gd_png.c:125: error: (Each undeclared identifier is reported only once
    gd_png.c:125: error: for each function it appears in.)
    gd_png.c:125: error: expected ‘;’ before ‘sig’
    gd_png.c:126: error: ‘png_structp’ undeclared (first use in this function)
    gd_png.c:126: error: expected ‘;’ before ‘png_ptr’
    gd_png.c:127: error: ‘png_infop’ undeclared (first use in this function)
    gd_png.c:127: error: expected ‘;’ before ‘info_ptr’
    gd_png.c:128: error: ‘png_uint_32′ undeclared (first use in this function)
    gd_png.c:128: error: expected ‘;’ before ‘width’
    gd_png.c:131: error: ‘png_colorp’ undeclared (first use in this function)
    gd_png.c:131: error: expected ‘;’ before ‘palette’
    gd_png.c:132: error: ‘png_color_16p’ undeclared (first use in this function)
    gd_png.c:132: error: expected ‘;’ before ‘trans_gray_rgb’
    gd_png.c:133: error: expected ‘;’ before ‘trans_color_rgb’
    gd_png.c:134: error: ‘png_bytep’ undeclared (first use in this function)
    gd_png.c:134: error: expected ‘;’ before ‘trans’
    gd_png.c:135: error: expected ‘;’ before ‘image_data’
    gd_png.c:136: error: ‘png_bytepp’ undeclared (first use in this function)
    gd_png.c:136: error: expected ‘;’ before ‘row_pointers’
    gd_png.c:144: error: ‘sig’ undeclared (first use in this function)
    gd_png.c:157: error: ‘png_ptr’ undeclared (first use in this function)
    gd_png.c:157: error: ‘PNG_LIBPNG_VER_STRING’ undeclared (first use in this function)
    gd_png.c:157: error: ‘gdPngErrorHandler’ undeclared (first use in this function)
    gd_png.c:166: error: ‘info_ptr’ undeclared (first use in this function)
    gd_png.c:182: error: ‘jmpbuf_wrapper’ has no member named ‘jmpbuf’
    gd_png.c:192: error: ‘gdPngReadData’ undeclared (first use in this function)
    gd_png.c:195: error: ‘width’ undeclared (first use in this function)
    gd_png.c:195: error: ‘height’ undeclared (first use in this function)
    gd_png.c:196: error: ‘PNG_COLOR_TYPE_RGB’ undeclared (first use in this function)
    gd_png.c:196: error: ‘PNG_COLOR_TYPE_RGB_ALPHA’ undeclared (first use in this function)
    gd_png.c:204: error: ‘image_data’ undeclared (first use in this function)
    gd_png.c:205: error: ‘row_pointers’ undeclared (first use in this function)
    gd_png.c:220: error: ‘jmpbuf_wrapper’ has no member named ‘jmpbuf’
    gd_png.c:233: error: ‘PNG_COLOR_TYPE_PALETTE’ undeclared (first use in this function)
    gd_png.c:234: error: ‘palette’ undeclared (first use in this function)
    gd_png.c:238: error: ‘PNG_INFO_tRNS’ undeclared (first use in this function)
    gd_png.c:246: error: ‘trans’ undeclared (first use in this function)
    gd_png.c:258: error: ‘PNG_COLOR_TYPE_GRAY’ undeclared (first use in this function)
    gd_png.c:259: error: ‘PNG_COLOR_TYPE_GRAY_ALPHA’ undeclared (first use in this function)
    gd_png.c:261: error: expected ‘)’ before ‘gdMalloc’
    gd_png.c:280: error: ‘trans_gray_rgb’ undeclared (first use in this function)
    gd_png.c:305: error: ‘trans_color_rgb’ undeclared (first use in this function)
    gd_png.c:322: error: ‘rowbytes’ undeclared (first use in this function)
    gd_png.c:327: error: expected ‘;’ before ‘gdMalloc’
    gd_png.c:345: error: expected ‘;’ before ‘gdMalloc’
    gd_png.c:357: error: ‘h’ undeclared (first use in this function)
    gd_png.c:381: error: ‘PNG_INTERLACE_ADAM7′ undeclared (first use in this function)
    gd_png.c:389: error: ‘w’ undeclared (first use in this function)
    gd_png.c:390: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘r’
    gd_png.c:390: error: ‘r’ undeclared (first use in this function)
    gd_png.c:391: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g’
    gd_png.c:391: error: ‘g’ undeclared (first use in this function)
    gd_png.c:392: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
    gd_png.c:392: error: ‘b’ undeclared (first use in this function)
    gd_png.c:401: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘r’
    gd_png.c:402: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g’
    gd_png.c:403: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
    gd_png.c:410: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘a’
    gd_png.c:410: error: ‘a’ undeclared (first use in this function)
    gd_png.c:419: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘idx’
    gd_png.c:419: error: ‘idx’ undeclared (first use in this function)
    gd_png.c: In function ‘gdImagePngCtxEx’:
    gd_png.c:499: error: ‘png_byte’ undeclared (first use in this function)
    gd_png.c:499: error: expected ‘;’ before ‘trans_values’
    gd_png.c:500: error: ‘png_color_16′ undeclared (first use in this function)
    gd_png.c:500: error: expected ‘;’ before ‘trans_rgb_value’
    gd_png.c:501: error: ‘png_color’ undeclared (first use in this function)
    gd_png.c:501: error: expected ‘;’ before ‘palette’
    gd_png.c:502: error: ‘png_structp’ undeclared (first use in this function)
    gd_png.c:502: error: expected ‘;’ before ‘png_ptr’
    gd_png.c:503: error: ‘png_infop’ undeclared (first use in this function)
    gd_png.c:503: error: expected ‘;’ before ‘info_ptr’
    gd_png.c:508: error: ‘png_ptr’ undeclared (first use in this function)
    gd_png.c:508: error: ‘PNG_LIBPNG_VER_STRING’ undeclared (first use in this function)
    gd_png.c:509: error: ‘gdPngErrorHandler’ undeclared (first use in this function)
    gd_png.c:520: error: ‘info_ptr’ undeclared (first use in this function)
    gd_png.c:524: error: ‘png_infopp’ undeclared (first use in this function)
    gd_png.c:529: error: ‘jmpbuf_wrapper’ has no member named ‘jmpbuf’
    gd_png.c:537: error: ‘gdPngWriteData’ undeclared (first use in this function)
    gd_png.c:538: error: ‘gdPngFlushData’ undeclared (first use in this function)
    gd_png.c:595: error: ‘PNG_INTERLACE_ADAM7′ undeclared (first use in this function)
    gd_png.c:595: error: ‘PNG_INTERLACE_NONE’ undeclared (first use in this function)
    gd_png.c:602: error: ‘PNG_COLOR_TYPE_RGB_ALPHA’ undeclared (first use in this function)
    gd_png.c:603: error: ‘PNG_COMPRESSION_TYPE_DEFAULT’ undeclared (first use in this function)
    gd_png.c:604: error: ‘PNG_FILTER_TYPE_DEFAULT’ undeclared (first use in this function)
    gd_png.c:609: error: ‘PNG_COLOR_TYPE_RGB’ undeclared (first use in this function)
    gd_png.c:617: error: ‘PNG_COLOR_TYPE_PALETTE’ undeclared (first use in this function)
    gd_png.c:623: error: ‘trans_rgb_value’ undeclared (first use in this function)
    gd_png.c:672: error: ‘trans_values’ undeclared (first use in this function)
    gd_png.c:694: error: ‘palette’ undeclared (first use in this function)
    gd_png.c:725: error: ‘png_bytep’ undeclared (first use in this function)
    gd_png.c:725: error: ‘row_pointers’ undeclared (first use in this function)
    gd_png.c:731: error: ‘prow_pointers’ undeclared (first use in this function)
    gd_png.c:747: error: expected ‘)’ before ‘gdMalloc’
    gd_png.c:804: error: expected ‘)’ before ‘gdMalloc’
    make[2]: *** [gd_png.lo] 错误 1
    make[2]:正在离开目录 `/usr/local/src/modules/gd-2.0.35′
    make[1]: *** [all-recursive] 错误 1<br>
    make[1]:正在离开目录 `/usr/local/src/modules/gd-2.0.35′
    make: *** [all] 错误 2很显然,这是引入png库出现的问题,解决方法进入gd源代码目录:vi gd_png.c将16行的png.h修改成 libpng安装目录/include/png.h我这边就是:/usr/local/libpng/include/png.hmake && make install 成功
    
    

    在安装php GD扩展时,报如下错误

    In file included from /kk/php-5.4.0/ext/gd/gd.c:103:

    /root/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_putc’:

    /root/php-5.4.0/ext/gd/gd_ctx.c:51: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

    /root/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_putbuf’:

    /root/php-5.4.0/ext/gd/gd_ctx.c:58: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

    /root/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_ctxfree’:

    /root/php-5.4.0/ext/gd/gd_ctx.c:67: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

    /root/php-5.4.0/ext/gd/gd_ctx.c:68: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

    /root/php-5.4.0/ext/gd/gd_ctx.c:69: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

    /root/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_output_ctx’:

    /root/php-5.4.0/ext/gd/gd_ctx.c:153: 错误:‘gdIOCtx’ 没有名为 ‘data’ 的成员

    make: *** [ext/gd/gd.lo] 错误 1

    解决方法

    vi <gd_dir>/include/gd_io.h

    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);

      /* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */

      int (*seek) (struct gdIOCtx *, const int);

      long (*tell) (struct gdIOCtx *);

      void (*gd_free) (struct gdIOCtx *);

      void (*data);

    }

    gdIOCtx;


    注:不知道是不是动态扩展gd的原因, 这个时候访问服务器并不能打开网页, 查找apache error_log, 上面写着:
    /usr/local/apache//bin/httpd: symbol lookup error: /usr/local/php5/lib/php/extensions/no-debug-zts-20100525/gd.so: undefined symbol: gdJpegGetVersionString

    /usr/local/apache//bin/httpd: symbol lookup error: /usr/local/php5/lib/php/extensions/no-debug-zts-20100525/gd.so: undefined symbol: gdPngGetVersionString

    在网上找了好长时间, 找不到解决这个问题的办法, 或者这个问题引起的原因, 我想到了一个办法作为临时的解决办法:修改gd.c
    $ vi $ cd <php源文件>/ext/gd/gd.c
    /*
    在这个文件的下面添加
    # include <{libpng安装目录}png.h>
    # include <{libjpeg安装目录}jpeglib.h>
    const char * gdJpegGetVersionString()
    {
              switch(JPEG_LIB_VERSION) {
                      case 62:
                              return "6b";
                              break;
                      default:
                              return "unknown";
              }
    }

    const char * gdPngGetVersionString()
    {
             return PNG_LIBPNG_VER_STRING;
    }

    */

    然后重新整合php & gd, 问题解决,可以生成验证码.


  • 相关阅读:
    BZOJ 1207
    Poj 2096 Collecting Bugs (概率DP求期望)
    HDU 5159 Card (概率求期望)
    HDU 4649 Professor Tian (概率DP)
    HDU 4652 Dice (概率DP)
    HDU5001 Walk(概率DP)
    C++中的 Round(),floor(),ceil()
    HDU 5245 Joyful(概率题求期望)
    poj 3071 Football (概率DP水题)
    关于一个群号分解的最大质数的求法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3141062.html
Copyright © 2011-2022 走看看