自20130204,修改了部分库的安装路径,在同系统版本同位数情况下,拷贝/opt/modules/到新环境,已经具备的库不需要再安装 一般来讲,GD、PHP、nginx和MYSQL也可以直接拷贝到新环境使用,只要应用的安装路径完全相同。但正式的生产环境,建议这几项仍重新编译 这样可以同时检查到拷贝的库,和系统环境是否有问题。 ############################################ ### 安装GD库及GD相关库 ##################### ### 安装libiconv ############ cd /root/software; tar zxf libiconv-1.13.1.tar.gz cd libiconv-1.13.1/ ./configure --prefix=/opt/modules/libiconv make && make install ### 安装zlib ############ 下载:http://sourceforge.net/projects/libpng/files/zlib/ 20130204,修改安装: cd /root/software; tar zxf zlib-1.2.3.tar.gz cd zlib-1.2.3 ./configure --prefix=/opt/modules/zlib make make install ### 安装freetype ############ cd /root/software; tar zxf freetype-2.4.10.tar.gz cd freetype-2.4.10 ./configure --prefix=/opt/modules/freetype make make install ### 安装libpng ############ 下载:http://sourceforge.net/projects/libpng/files/ 20130204,修改安装: cd /root/software; tar zxf libpng-1.2.40.tar.gz cd libpng-1.2.40 cp scripts/makefile.linux makefile 需要修改makefile文件: 找到CFLAGS=后加上-fPIC 还要修改以下: prefix=/opt/modules/libpng ZLIBLIB=/opt/modules/zlib/lib ZLIBINC=/opt/modules/zlib/include 修改完成 make make install ##### 备用############ 20130419,提示找不到zlib,所以改为如下 同时修改编译安装方式为: cp scripts/makefile.std makefile 64位系统下,需要修改makefile文件: 找到CFLAGS=后加上-fPIC 还要修改以下: prefix=/opt/modules/libpng ZLIBLIB=/opt/modules/zlib/lib ZLIBINC=/opt/modules/zlib/include 修改完成 mkdir /opt/modules/libpng -p make test make install ########### ### 安装jpeg ############ 最新下载:http://www.ijg.org/ mkdir -p /opt/modules/jpeg/man/man1 mkdir /opt/modules/jpeg/bin mkdir /opt/modules/jpeg/lib mkdir /opt/modules/jpeg/include cd /root/software; tar zxf jpegsrc.v7.tar.gz cd jpeg-7/ ./configure --prefix=/opt/modules/jpeg --enable-shared --enable-static make make install ### 安装GD(PHP 5.6需要gd-2.1.0以上版本) ######################## #####20130419,修改安装: cd /root/software; tar zxf gd-2.0.35.tar.gz cd gd-2.0.35 CPPFLAGS="-O3 -fPIC -I/opt/modules/zlib/include" \ CFLAGS="-O3 -fPIC -I/opt/modules/zlib/include" \ LDFLAGS="-L/opt/modules/zlib/lib" \ ./configure --prefix=/opt/modules/gd \ --with-jpeg=/opt/modules/jpeg \ --with-freetype=/opt/modules/freetype \ --with-libiconv-prefix=/opt/modules/libiconv \ --with-png=/opt/modules/libpng \ --enable-m4_pattern_allow 因zlib路径问题实在无法成功安装,可把zlib安装到系统路径中,再使用下面的方法: ./configure --prefix=/opt/modules/gd \ --with-jpeg=/opt/modules/jpeg7 \ --with-freetype=/opt/modules/freetype \ --with-libiconv-prefix=/opt/modules/libiconv \ --with-png=/opt/modules/libpng \ --with-zlib make make install 注意观察结果为: ** Configuration summary for gd 2.0.35: Support for PNG library: yes Support for JPEG library: yes Support for Freetype 2.x library: yes Support for Fontconfig library: no Support for Xpm library: no Support for pthreads: yes 在centos6.3_64系统安装png不上,可去掉CPPFLAGS等参数,取消安装png 另外采用RPM包安装库也能解决: yum install libpng-devel 甚至也可以把libjpeg-devel freetype-devel 安装上,就不采用编译安装的库了 总之,感觉gd的编译对寻找png库指定路径的方式支持得不是很好 如有报错,见下面解决方法,如果先使用下面的解决方法,可能需要预编译2次 Could not read symbols解决方法 http://blog.chinaunix.net/uid-16362696-id-2746838.html 发现zlib报这个错,找不到解决方法,直接把zlib编译到系统路径下,然后去除CPPFLAGS等参数 遇错:line 46: aclocal-1.9: command not found yum install libtool autoconf ####### 错误解决########## 报错信息“configure.ac:64: error: possibly undefined macro: AM_ICONV” 我采用了解决方法二 解决方法一: 到 http://www.gnu.org/software/gettext/下载了gettext-0.18.1.1.tar.gz cd /root/software; wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz cp /usr/lib/libattr.* /lib/ (如果make的时候报错说没有libattr.la这个文件,就要复制过去) cd /root/software; tar xzf gettext-0.18.2.tar.gz cd gettext-0.18.2 ./configure make make install ################### 解决方法二: 编译的时候加上参数 --enable-m4_pattern_allow 如果遇到:make[2]: *** [gd_png.lo] 错误 1 将gd库的文件进行修改 vi gd_png.c 找到 #include "png.h" 改成 #include "/opt/modules/libpng/include/png.h" 注意,不要去掉"#" ########################################### ### 安装PHP相关软件包 ##################### ### 安装libxml2 ############ 下载:ftp://xmlsoft.org/libxml2/ cd /root/software; tar zxf libxml2-sources-2.6.30.tar.gz cd libxml2-2.6.30/ ./configure --prefix=/opt/modules/libxml make make install ### 安装libmcrypt ############ cd /root/software; tar zxf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install #注意:不安装libltdl会导致php编译通不过 make make install 20130204,修改安装路径失败,还是采用老安装方法): cd /root/software; tar zxf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --prefix=/opt/modules/libmcrypt --enable-ltdl-install make make install ########问题############## cd libltdl LDFLAGS="-L/opt/modules/libmcrypt/lib" \ CFLAGS="-I/opt/modules/libmcrypt/include" \ ./configure --prefix=/opt/modules/libmcrypt --enable-ltdl-install #注意:不安装libltdl会导致php编译通不过,我们把它安装到libmcrypt同目录 make 如遇报错:./libtool: line 3965: ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib ): command not found 产生原因:源码包中LIBTOOL版本过低。 解决方法:让编译时调用系统的LIBTOOL。修改Makefile文件,LIBTOOL=$(SHELL) $(top_builddir)/libtool 为LIBTOOL=$(SHELL) /usr/bin/libtool 如果还是不行,这样: make clean LDFLAGS="-L/opt/modules/libmcrypt/lib" \ CFLAGS="-I/opt/modules/libmcrypt/include" \ ./configure --prefix=/opt/modules/libmcrypt --enable-ltdl-install cp -ap /usr/bin/libtool ./ (没有libtool,可以安装yum install libtool) make make install ######################################### ### 安装mhash ############ cd /root/software; tar zxf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure --prefix=/opt/modules/mhash make make install 创建动态库的软链接(采用20130204的安装方法,就不用创建了) ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 ### 安装mcrypt ############ (php有可能只是需要libmcrypt,这个mcrypt不需要安装,待验证) cd /root/software; tar zxf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ ./configure --prefix=/opt/modules/mcrypt --with-libmcrypt-prefix=/opt/modules/libmcrypt --with-libiconv-prefix=/opt/modules/libiconv make make install 20130204,修改安装 vi /etc/ld.so.conf 在最上面添加: /opt/modules/mhash/lib /opt/modules/libmcrypt/lib 执行 /sbin/ldconfig 使之生效 cd /root/software; tar zxf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ ########## 没有上面变量申请,可能在预配置时会遇到错误: configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/" configure: error: *** libmcrypt was not found ####### LDFLAGS="-L/opt/modules/mhash/lib -L/opt/modules/libmcrypt/lib" \ CFLAGS="-I/opt/modules/mhash/include -I/opt/modules/libmcrypt/include" \ ./configure --prefix=/opt/modules/mcrypt \ --with-libmcrypt-prefix=/opt/modules/libmcrypt \ --with-libintl-prefix=/opt/modules/libmcrypt \ --with-libiconv-prefix=/opt/modules/libiconv make make install ### 安装libevent ##################### cd /root/software; tar zxf libevent-1.4.12-stable.tar.gz cd libevent-1.4.12-stable ./configure --prefix=/opt/modules/libevent make make install ### 安装openssl ##################### 20130204新增 下载:http://www.openssl.org/source/ cd /root/software; wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz cd /root/software; tar zxf openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config shared zlib enable-camellia --prefix=/opt/modules/openssl --openssldir=/opt/modules/ssl make depend make make install