解决方法。
1. 查看你的系统有没有安装mysql header
find / -name mysql.h
如果有。请指定--with-mysql=/跟你的正常路径。
如果没有。请看下一步。
2.redhat安装
rpm -ivh MySQL-devel-4.1.12-1.i386.rpm
3.debian安装
apt-get install libmysqlclient15-dev
4.最后一步php的配置选项添加--with-mysql=/usr即可!
不知道大家有没有遇到在 X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl,gettext... 到编译 GD 库的时候出错.
configure 的参数是
./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libart=/usr/local/libart/ --with-gettext=/usr/local/gettext/ --with-libxml=/usr/local/libxml2
---------------------------
错误如下:
/usr/bin/ld: /usr/local/jpeg6//lib/libjpeg.a(jcapimin.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/jpeg6//lib/libjpeg.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
到网上搜索,很多网友都说只需要修改 Makefile
vi Makefile
找到 CFLAGS= -O2 -I$(srcdir)
在后面加入-fPIC,即变成CFLAGS= -O2 -I$(srcdir) -fPIC
这样就可以继续编译了
但我在 gd-2.0.35 gd-2.0.33 以及 gd-2.0.36RC1 的 Makefile 里头,
都只找到 CFLAGS= -O2 并没有后边的 -I$(srcdir)
故此就算把-fPIC加上了,也毫无作用。
------------------------------------
开始着手研究,根据错误提示,应该是跟 jpeg6 有关,于是尝试使用另外方式对 jpeg6 进行编译。
原本网上最多的编译 jpeg6 的方法是 (注jpeg6下载地址http://www.ijg.org/)
-----------------------------
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b/
# ./configure --prefix=/usr/local/jpeg6
# make
# make install-lib
# make install
在32位上以这种方式安装是没问题的.但64的话,或许要改一改,如下:
-----------------------------
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b/
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make
# make install
----------------------------
但又会出个问题! 大多数环境在用这种方式编译jpeg6的时候都会出错(有够烦的,简直是一波三折),提示
make: ./libtool: Command not found
make: *** [jcapimin.lo] Error 127
---------------------------
错误分析:由于libtool版本过低导致的,重新下载新版本的libtool以默认方式安装.下载地址:ftp://ftp.gnu.org/gnu/libtool/
也不用下载太新,1.5.xx 既可。执行以下命令:
# tar zxvf libtool-1.5.26.tar.gz
# cd libtool-1.5.26
# ./configure
# make
# make install
(最好重新启动一下服务器,重新加载环境以确保正常)
然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!
# cp /usr/local/share/libtool/config.sub ./
# cp /usr/local/share/libtool/config.guess ./
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make
# make install
---------------------------
好了!这下尝试执行GD 的 configure , 虽然依然是 libgd.la 错误,但提示的已经不是 jpeg6 的问题了。
这下是 freetype2 的问题了,如下:
---------------------------
/usr/bin/ld: /usr/local/freetype2/lib/libfreetype.a(ftinit.o): relocation R_X86_64_32 against `tt_driver_class' can not be used when making a shared object; recompile with -fPIC
/usr/local/freetype2/lib/libfreetype.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
---------------------------
着看上去是freetype2 出错但其实是zlib安装问题
原本的编译方法就直接是:
---------------------------
# tar zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure --prefix=/usr/local/zlib2/ && make && make install
在32位上以这种方式安装是没问题的.但64的话,要改一改,如下
---------------------------
解决方法:重新编译安装zlib,步骤如下:(在重新编译之前记得要把之前安装在/usr/local/zlib2里头的文件都完全删除)
# tar -zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure
#vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC,即变成CFLAGS=-O3 -DUSE_MMAP -fPIC
# make
# make install
-----------------------------
然后再重新编译 freetype (在重新编译之前记得要把之前安装在/usr/local/freetype里头的文件都完全删除)
#./configure --prefix=/usr/local/freetype2/ && make && make install
Zlib 跟 freetype 的安装一定要按照顺序,不然解决不了问题.
-----------------------------
行了!这下子 freetype 也没问题了!但GD的编译还是不过,错误如下:
/usr/bin/ld: /usr/local/libpng2/lib/libpng12.a(libpng12_la-png.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/libpng2/lib/libpng12.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
-----------------------------
libpng的问题,我们改一改编译以及安装的方式。跟上边2个一样,要先把/usr/local/libpng2 都删干净,然后再重新编译安装。
编译安装 libpng
#tar zxvf libpng-1.2.34.tar.gz
#cd libpng-1.2.34
#cp scripts/makefile.gcmmx makefile
#./configure --prefix=/usr/local/libpng2/
# vi Makefile
找到 CFLAGS = -g -O2 后边加上 -fPIC
# make && make install
-----------------------------
好了,真像玩游戏过三关的样子.....
把最后这 libpng 也解决了,这GD也总算是编译好了。
接下来终于能编译 php-5.2.6
# tar zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --with-freetype-dir=/usr/local/freetype2/ --with-zlib-dir=/usr/local/zlib2/ -with-mysql=/usr/local/mysql --with-curl=/usr/local/curl --with-gettext=/usr/local/gettext
好了! 又卡住了!!!!!
如果 mysql 是使用rpm方式安装,除了安装server跟client记得装上其开发包 MySQL-devel-community
如果你的mysql是装在另外一台机器,这么你编辑安装php也只需装上 MySQL-client-community 跟 MySQL-devel-community
不然php ./configure 的时候会出现找不到 mysql 的错误
#####################
如果你已经安装了上述说的rpm包,或者是以编译方式安装mysql的,还是出错,并提示 Cannot find libmysqlclient_r 。
如下:
checking for MySQL support… yes checking for specified location of the MySQL UNIX socket… no checking for MySQL UNIX socket location… no configure: error: Cannot find libmysqlclient_r under /usr/local/mysql. Note that the MySQL client library is not bundled anymore!
-----------------------------
或者是:
checking for MySQL support… yes checking for specified location of the MySQL UNIX socket… no checking for MySQL UNIX socket location… no configure: error: Cannot find libmysqlclient_r under /usr. Note that the MySQL client library is not bundled anymore!
-----------------------------
那么,你需要注意了,你可能在编译APACHE的时候,使用–with-mpm模块,请在编译MYSQL的时候加上 –enable-thread-safe-client.
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程。 因此在安装MYSQL时,configure应该是: ./configure prefix=/usr/local/mysql –with-extra-charsets=all –enable-thread-safe-client
如果是rpm安装的话,经过一番研究,得出所需文件 libmysqlclient rpm包默认安装在了 /usr/lib64/mysql 下。
但PHP编译的时候找的是 /usr/lib/mysql 所以就找不到了。
这么好办,做个软连接即刻解决 ln -s /usr/lib64/mysql /usr/lib
这样就会有了 /usr/lib/mysql 这一路径,PHP编译顺利通过!
最后 ZendOptimizer 也需要装上 X64 版本.最新下载地址为:
http://downloads.phpchina.com/zend/optimizer/
不知道大家有没有遇到在 X64 RedHat5 或者 RedHat4 下.编译安装PHP环境的时候. 安装了libxml,zlib,jpeg,libpng,freetype,libart_lgpl,gettext... 到编译 GD 库的时候出错.
configure 的参数是
./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libart=/usr/local/libart/ --with-gettext=/usr/local/gettext/ --with-libxml=/usr/local/libxml2
---------------------------
错误如下:
/usr/bin/ld: /usr/local/jpeg6//lib/libjpeg.a(jcapimin.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/jpeg6//lib/libjpeg.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
到网上搜索,很多网友都说只需要修改 Makefile
vi Makefile
找到 CFLAGS= -O2 -I$(srcdir)
在后面加入-fPIC,即变成CFLAGS= -O2 -I$(srcdir) -fPIC
这样就可以继续编译了
但我在 gd-2.0.35 gd-2.0.33 以及 gd-2.0.36RC1 的 Makefile 里头,
都只找到 CFLAGS= -O2 并没有后边的 -I$(srcdir)
故此就算把-fPIC加上了,也毫无作用。
------------------------------------
开始着手研究,根据错误提示,应该是跟 jpeg6 有关,于是尝试使用另外方式对 jpeg6 进行编译。
原本网上最多的编译 jpeg6 的方法是 (注jpeg6下载地址http://www.ijg.org/)
-----------------------------
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b/
# ./configure --prefix=/usr/local/jpeg6
# make
# make install-lib
# make install
在32位上以这种方式安装是没问题的.但64的话,或许要改一改,如下:
-----------------------------
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b/
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make
# make install
----------------------------
但又会出个问题! 大多数环境在用这种方式编译jpeg6的时候都会出错(有够烦的,简直是一波三折),提示
make: ./libtool: Command not found
make: *** [jcapimin.lo] Error 127
---------------------------
错误分析:由于libtool版本过低导致的,重新下载新版本的libtool以默认方式安装.下载地址:ftp://ftp.gnu.org/gnu/libtool/
也不用下载太新,1.5.xx 既可。执行以下命令:
# tar zxvf libtool-1.5.26.tar.gz
# cd libtool-1.5.26
# ./configure
# make
# make install
(最好重新启动一下服务器,重新加载环境以确保正常)
然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!
# cp /usr/local/share/libtool/config.sub ./
# cp /usr/local/share/libtool/config.guess ./
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make
# make install
---------------------------
好了!这下尝试执行GD 的 configure , 虽然依然是 libgd.la 错误,但提示的已经不是 jpeg6 的问题了。
这下是 freetype2 的问题了,如下:
---------------------------
/usr/bin/ld: /usr/local/freetype2/lib/libfreetype.a(ftinit.o): relocation R_X86_64_32 against `tt_driver_class' can not be used when making a shared object; recompile with -fPIC
/usr/local/freetype2/lib/libfreetype.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
---------------------------
着看上去是freetype2 出错但其实是zlib安装问题
原本的编译方法就直接是:
---------------------------
# tar zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure --prefix=/usr/local/zlib2/ && make && make install
在32位上以这种方式安装是没问题的.但64的话,要改一改,如下
---------------------------
解决方法:重新编译安装zlib,步骤如下:(在重新编译之前记得要把之前安装在/usr/local/zlib2里头的文件都完全删除)
# tar -zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
#./configure
#vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC,即变成CFLAGS=-O3 -DUSE_MMAP -fPIC
# make
# make install
-----------------------------
然后再重新编译 freetype (在重新编译之前记得要把之前安装在/usr/local/freetype里头的文件都完全删除)
#./configure --prefix=/usr/local/freetype2/ && make && make install
Zlib 跟 freetype 的安装一定要按照顺序,不然解决不了问题.
-----------------------------
行了!这下子 freetype 也没问题了!但GD的编译还是不过,错误如下:
/usr/bin/ld: /usr/local/libpng2/lib/libpng12.a(libpng12_la-png.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/libpng2/lib/libpng12.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libgd.la] 错误1
make[2]: Leaving directory `/data/soft/php/gd-2.0.35'
make[1]: *** [all-recursive] 错误1
make[1]: Leaving directory `/data/soft/php/gd-2.0.35'
make: *** [all] 错误2
-----------------------------
libpng的问题,我们改一改编译以及安装的方式。跟上边2个一样,要先把/usr/local/libpng2 都删干净,然后再重新编译安装。
编译安装 libpng
#tar zxvf libpng-1.2.34.tar.gz
#cd libpng-1.2.34
#cp scripts/makefile.gcmmx makefile
#./configure --prefix=/usr/local/libpng2/
# vi Makefile
找到 CFLAGS = -g -O2 后边加上 -fPIC
# make && make install
-----------------------------
好了,真像玩游戏过三关的样子.....
把最后这 libpng 也解决了,这GD也总算是编译好了。
接下来终于能编译 php-5.2.6
# tar zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --with-freetype-dir=/usr/local/freetype2/ --with-zlib-dir=/usr/local/zlib2/ -with-mysql=/usr/local/mysql --with-curl=/usr/local/curl --with-gettext=/usr/local/gettext
好了! 又卡住了!!!!!
如果 mysql 是使用rpm方式安装,除了安装server跟client记得装上其开发包 MySQL-devel-community
如果你的mysql是装在另外一台机器,这么你编辑安装php也只需装上 MySQL-client-community 跟 MySQL-devel-community
不然php ./configure 的时候会出现找不到 mysql 的错误
#####################
如果你已经安装了上述说的rpm包,或者是以编译方式安装mysql的,还是出错,并提示 Cannot find libmysqlclient_r 。
如下:
checking for MySQL support… yes checking for specified location of the MySQL UNIX socket… no checking for MySQL UNIX socket location… no configure: error: Cannot find libmysqlclient_r under /usr/local/mysql. Note that the MySQL client library is not bundled anymore!
-----------------------------
或者是:
checking for MySQL support… yes checking for specified location of the MySQL UNIX socket… no checking for MySQL UNIX socket location… no configure: error: Cannot find libmysqlclient_r under /usr. Note that the MySQL client library is not bundled anymore!
-----------------------------
那么,你需要注意了,你可能在编译APACHE的时候,使用–with-mpm模块,请在编译MYSQL的时候加上 –enable-thread-safe-client.
这是PHP5.2的一个改进,在PHP5.2.0之前的版本都不需要MYSQL启用安全线程。 因此在安装MYSQL时,configure应该是: ./configure prefix=/usr/local/mysql –with-extra-charsets=all –enable-thread-safe-client
如果是rpm安装的话,经过一番研究,得出所需文件 libmysqlclient rpm包默认安装在了 /usr/lib64/mysql 下。
但PHP编译的时候找的是 /usr/lib/mysql 所以就找不到了。
这么好办,做个软连接即刻解决 ln -s /usr/lib64/mysql /usr/lib
这样就会有了 /usr/lib/mysql 这一路径,PHP编译顺利通过!
最后 ZendOptimizer 也需要装上 X64 版本.最新下载地址为:
http://downloads.phpchina.com/zend/optimizer/
本文测试环境Red Hat Enterprise 5.4,均为源码编译安装,以下下载安装包注意“保质期”,随时有可能连不上,也可能因为版本太老被转移地址,具体可到对应网站上查看最新地址。 以下安装过程少则一个小时,多则三五天都有可能,所以遇到问题不必着急。为保证在安装、编译过程系统干净性(亦有网友称天缘为强迫症的),下文操作一律在/tmp临时目录下进行,使用cd或cd..一定要对应,否则连续出错几次,自己都不清楚包被DOWN到哪里了。
编译安装包之前,请确认您的gcc工具及版本情况:
gcc -v
至少应该包含gcc gcc/c++,libtool,autoconfi,automake等几个常用的。其中libtool是编译gd库和freetype时需要,版本太低也可能有问题。
安装编译环境命令如下:
# yum install gcc gcc-c++ glibc glibc-devel gd gd-devel zlib zlib-devel libtool-ltdl-devel flex autoconf automake
该命令对REDHAT没注册的用户而言,无法在线安装,只能去下载包一个个源码编译安装。也可以直接找RPM、DEB包安装。本文从略,注意安装或更新编译环境后,记得重启机子一次。
如果下文安装GD、FREETYPE时总是报错,请安装或更新libtool,编译安装Libtool,更新这个,机子需要重启一下,否则在安装GD时,总是报告freetype错误。
1 |
# cd /tmp |
2 |
# wget ftp: //ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz |
3 |
# tar zxvf libtool-1.5.26.tar.gz |
4 |
# cd libtool-1.5.26 |
5 |
# ./configure |
6 |
# make |
7 |
# make install |
1 |
# cd /tmp |
2 |
# wget http: //www.apache.org/dist/httpd/httpd-2.2.22.tar.gz |
3 |
# tar zxvf httpd-2.2.22.tar.gz |
4 |
# cd httpd-2.2.22 |
5 |
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite |
6 |
# make && make install |
如果需要为APACHE开启SSL,还需增加--enable-ssl --with-ssl=/usr/local/openssl配置选项,所以openssl也需先安装,请参考稍后文章。
启动apache:
# /usr/local/apache2/bin/apachectl start
设APACHE为服务:
# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
修改刚拷贝过去的httpd:
在#!/bin/sh一行下,增加:
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
然后保存退出。使用chkconfig --add httpd即可设置为服务,开机启动。但是毕竟是apachectl,启动停止时均没有提示。
APACHE基本设置:
Apache安装完后,配置文件httpd.conf需添加对php解析支持,路径/usr/local/apache2/conf/httpd.conf。
添加:AddType application/x-httpd-php .php
修改:DirectoryIndex index.html index.php
1、安装ncurse:
ncurse介绍,安装方法如下:
1 |
# cd /tmp |
2 |
# wget http: //ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz |
3 |
# tar zxvf ncurses-5.6.tar.gz |
4 |
# cd ncurses-5.6 |
5 |
# ./configure |
6 |
# make && make install |
要编译最新的MYSQL还需要使用CMAKE和BISON(BISON介绍),如果本机有则不必安装。
2、安装cmake:
1 |
# cd /tmp |
2 |
# wget http: //www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz |
3 |
# tar zxvf cmake-2.8.7.tar.gz |
4 |
# cd cmake-2.8.7 |
5 |
# ./bootstrap |
6 |
# gmake |
7 |
# gmake install |
cmake命令文件安装到了/usr/local/bin目录下
3、安装Bison:
1 |
# cd /tmp |
2 |
# wget http: //ftp.gnu.org/gnu/bison/bison-2.5.tar.gz |
3 |
# tar zxvf bison-2.5.tar.gz |
4 |
# cd bison-2.5 |
5 |
# ./configure |
6 |
# make && make install |
4、安装MYSQL:
1 |
# cd /tmp |
2 |
# wget http: //mirror.trouble-free.net/mysql_mirror/Downloads/MySQL-5.5/mysql-5.5.22.tar.gz |
3 |
# tar zxvf mysql-5.5.22.tar.gz |
4 |
# cd mysql-5.5.22 |
5 |
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql |
6 |
# make && make install |
cmake几个参数介绍:
添加群组:
修改权限及归属:
增加链接:
准备配置文件:
MYSQL数据库初始化:
如需修改my.cnf,可以访问/etc/my.cnf,MYSQL初始化(特别注意参数中的几个路径与cmake配置,以及下文修改启动文件中路径需要统一):
设置开机启动:
启动 mysql:
测试进入:
修改root密码
1、编译安装libxml
1 |
# cd /tmp |
2 |
# wget http: //xmlsoft.org/sources/libxml2-2.7.8.tar.gz |
3 |
# tar zxvf libxml2-2.7.8.tar.gz |
4 |
# cd libxml2-2.7.8 |
5 |
# ./configure --prefix=/usr/local/libxml2/ |
6 |
# make && make install |
2、编译安装zlib
下面安装libpng前要安装zlib,参考:http://fruithardcandy.iteye.com/blog/1460647。
01 |
# cd /tmp |
02 |
# wget http: //www.zlib.net/zlib-1.2.3.tar.gz |
03 |
# tar zxvf zlib-1.2.3.tar.gz |
04 |
# # cd zlib/1.2.3/ |
05 |
# ./configure --prefix=/usr/local/zlib2/ |
06 |
64位要改: |
07 |
#vi Makefile |
08 |
找到 CFLAGS=-O3 -DUSE_MMAP |
09 |
在后面加入-fPIC,即变成CFLAGS=-O3 -DUSE_MMAP -fPIC |
10 |
# make && make install |
3、编译安装jpeg
01 |
# cd /tmp |
02 |
# wget http: //quirkysoft.googlecode.com/files/jpegsrc.v6b.tar.gz |
03 |
# mkdir -pv /usr/local/jpeg6{,bin,lib, include ,man/man1,man1} |
04 |
# tar zxvf jpegsrc.v6b.tar.gz |
05 |
# cd jpeg-6b |
06 |
64位系统要执行如下两句: |
07 |
# cp /usr/local/share/libtool/config.sub ./ |
08 |
# cp /usr/local/share/libtool/config.guess ./ |
09 |
32位系统用: |
10 |
# ./configure --prefix=/usr/local/jpeg6 |
11 |
64位系统用: |
12 |
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable- static |
13 |
# make |
14 |
# make install-lib |
15 |
# make install |
4、编译安装libpng
1 |
# cd /tmp |
2 |
# wget ftp: //ftp.simplesystems.org/pub/libpng/png/src/libpng-1.4.11.tar.gz |
3 |
# tar zxvf libpng-1.4.11.tar.gz |
4 |
# cd libpng-1.4.11 |
5 |
下面这句,天缘测试不能执行,否则就会报告下面的错误,而且无法安装到/usr/lib/libpn/下 |
6 |
# cp scripts/makefile.linux makefile |
7 |
# ./configure --prefix=/usr/local/libpng/ |
8 |
# make && make install |
如果执行上文的cp script...命令,最后安装PHP时会总是报告:
./conftest: error while loading shared libraries: libpng14.so.14: cannot open shared object file: No such file or directory
错误。
经查,libpng相关文件并没有安装到/usr/local/libpng下面,只是把库libpng14.so.14.11拷贝到/usr/local/lib/下,实际的libpng14.so.14文件却在原编译目录下,即使尝试为它创建链接也无法解决上述错误。最后干脆直接去掉该句,反倒好了。
5、编译安装freetype
1 |
# cd /tmp |
2 |
# wget http: //oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz |
3 |
# tar zxvf freetype-2.3.5.tar.gz |
4 |
# cd freetype-2.3.5 |
5 |
# ./configure --prefix=/usr/local/freetype2/ |
6 |
# make && make install |
6、安装GD库:
注意configure参数对应上文各路径是否正确,如果没装可对应去掉该项参数。
1 |
# cd /tmp |
2 |
# wget http: //google-desktop-for-linux-mirror.googlecode.com/files/gd-2.0.35.tar.gz |
3 |
# tar zxvf gd-2.0.35.tar.gz |
4 |
# cd gd/2.0.35/ |
5 |
# ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng/ --with- jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libart=/usr/local/libart/ --with- gettext =/usr/local/ gettext / --with-libxml=/usr/local/libxml2 |
6 |
我的配置: |
7 |
# ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng/ --with- jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libxml=/usr/local/libxml2 |
8 |
# cp /usr/lib/libattr.* /lib/ |
9 |
# make && make install |
1、编译安装Curl支持:
1 |
# cd /tmp |
2 |
# wget http: //dl.ambiweb.de/mirrors/curl.haxx.se/curl-7.15.0.tar.gz |
3 |
# tar zxvf curl-7.15.0.tar.gz |
4 |
# cd curl-7.15.0 |
5 |
# ./configure --prefix=/usr/local/curl |
6 |
# make && make install |
2、libmcrypt库一般也需要:
1 |
# cd /tmp |
2 |
#tar zxvf libmcrypt-2.5.7.tar.gz |
3 |
#cd libmcrypt-2.5.7 |
4 |
#./configure --prefix=/usr/local/libmcrypt |
5 |
#make |
6 |
#make install |
3、编译安装PHP:
1 |
# cd /tmp |
2 |
#wget http: //download.huihoo.com/php/php-5.4.0.tar.gz |
3 |
#tar zxvf php-5.4.0.tar.gz |
4 |
#cd php-5.4.0 |
5 |
# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-freetype-dir=/usr/local/freetype2/ --with-zlib --with-png-dir=usr/local/libpn2 --with-libxml-dir=/usr/local/libxml2 --with-gd --with-mcrypt=/usr/local/libmcrypt/ --enable-ftp --enable-sockets |
6 |
我的配置: |
7 |
# ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5 --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-freetype-dir=/usr/local/freetype2/ --with-zlib-dir=/usr/local/zlib/ --with-png-dir=/usr/local/libpng/ --with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd2/ --with-mysqli=/usr/local/mysql/bin/mysql_config |
8 |
#make && make install |
其中--with-config-file-path指定加载PHP配置文件路径。如果不设置,那么PHP无法找到Loaded Configuration File路径(phpinfo里可查看)。
--with-mysqli=/usr/local/mysql/bin/mysql_config是为了增加mysqli支持,但是问题由此而来,测试编译php-5.2.6时总是出现某个变量未定义现象,之后改成5.4.0又出现struct gdIOCtx中没有data指针定义,最后修改/usr/local/gd2/include/gd_io.h,gdIOCtx结构中增加void *data;这才编译通过。
从源码中拷贝PHP配置文件:
修改/usr/local/php5/php.ini文件,如果有额外模块需要加载,修改extension_dir- = "./" 为 extension_dir- = "./include/php/ext"。
4、安装ZendOptimizer:
1 |
# cd /tmp |
2 |
# tar zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz |
3 |
# cd ZendOptimizer-3.3.0a-linux-glibc21-i386 |
4 |
# ./install |
5、安装phpmyadmin:
1 |
# cd /tmp |
2 |
# tar jxvf phpMyAdmin-2.11.9.4-all-languages-utf-8-only.tar.bz2 |
3 |
# mv phpMyAdmin-2.11.9.4-all-languages-utf-8-only /usr/local/apache/htdocs/ |
4 |
# cd /usr/local/apache/htdocs/ |
5 |
# cp libraries/config. default .php config.inc.php |
phpmyadmin在使用前还需修改配置文件,config.inc.php,设置数据库访问名称、密码等,本文从略。
重启apache服务:
service httpd restart
重启mysql:
service mysqld restart
此两步难顺利者十之八九,多次摸索之后一般均可解决。
参考资料:
http://www.oschina.net/question/17_87,几个问题都是从TA的文章中得到解决方法。
http://www.linuxidc.com/Linux/2012-04/58140.htm 介绍源码编译MYSQL 5.5.22
http://zhengdl126.iteye.com/blog/481183 介绍CentOS下安装LAMP
http://httpd.apache.org/docs/2.2/programs/apxs.html
http://bbs.ecshop.com/thread-36453-2-7.html
http://www.quyu.co/thread-34-1-1.html
http://comtv.blog.51cto.com/17037/399566
http://www.optix.org/~dxy/solaris/jpegsrc/