前面咱们讲过了在linux环境下经过rpm的方式来安装ICE,这种安装方式能够是比较简单的,本身在安装过程当中发现后面PHP没法装在IcePHP.sp模块,也有可能本身在安装过程当中某个地方出错了。又尝试经过直接编译的方式去安装ICE,PHP也正常装在了IcePHP.so模块,大功告成,这里记录一下方法。 php
以安装ICE-3.4.2版本为例,为了方便管理,将ICE相关的软件都安装到/usr/local/ICE-3.4.2/目录下。 html
1、安装第三方包:ThirdParty-Sources-3.4.2 node
一、解压安装包 linux
# tar zxvf ThirdParty-Sources-3.4.2.tar.gz # cd ThirdParty-Sources-3.4.2二、安装mcpp
# tar zxvf mcpp-2.7.2.tar.gz # cd mcpp-2.7.2 # ./configure --prefix=/usr/local/ICE-3.4.2/mcpp-2.7.2/ CFLAGS=-fPIC -enable-mcpplib -disable-shared # make # make install
三、安装Berkeley DB 算法
Berkeley DB 是一个高性能的,嵌入数据库编程库,和C语言, C++, Java, Perl, Python, Tcl以及其余不少语言都有绑定。 数据库
# cd .. # tar zxvf db-4.8.30.NC.tar.gz # cd db-4.8.30.NC/build_unix/ # ../dist/configure --prefix=/usr/local/ICE-3.4.2/BerkeleyDB.4.6/ -enable-cxx # make # make install四、安装bzip2
bzip2 是 Julian Seward 开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。 编程
# cd../../ # tar zxvf bzip2-1.0.6.tar.gz # cd bzip2-1.0.6修改Makefile,将PREFIX指向/usr/local/ICE-3.4.2/bzip2-1.0.6
# make # make install五、安装expat
expat 是一个 XML parsing C library。 vim
# cd .. # tar zxvf expat-2.0.1.tar.gz # cd expat-2.0.1 # ./configure --prefix=/usr/local/ICE-3.4.2/expat-2.0.1/ # make # make install六、安装openssl
openssl 是 Secure Socket Layer (SSL) binary and related cryptographic tools。 性能
# cd .. # tar zxvf openssl-0.9.8r.tar.gz # cd openssl-0.9.8r # ./config --prefix=/usr/local/ICE-3.4.2/openssl # make # make install2、安装ICE-3.4.2
# tar zxvf Ice-3.4.2.tar.gz # cd Ice-3.4.2/cpp # vi config/Make.rules修改安装包路径:
prefix ?= /usr/local/ICE-3.4.2/Ice-$(VERSION) embedded_runpath_prefix ?= /usr/local/ICE-3.4.2/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) BZIP2_HOME ?= /usr/local/ICE-3.4.2/bzip2-1.0.6 DB_HOME ?= /usr/local/ICE-3.4.2/BerkeleyDB.4.6 EXPAT_HOME ?= /usr/local/ICE-3.4.2/expat-2.0.1 OPENSSL_HOME ?= /usr/local/ICE-3.4.2/openssl MCPP_HOME ?= /usr/local/ICE-3.4.2/mcpp-2.7.2
# make编译过程报错:
../../lib/libIce.so: undefined reference to `libiconv' ../../lib/libIce.so: undefined reference to `libiconv_close' ../../lib/libIce.so: undefined reference to `libiconv_open' collect2: ld 返回 1 make[2]: *** [../../bin/transformdb] 错误 1 make[2]: Leaving directory `/data/software/Ice-3.4.2/cpp/src/FreezeScript' make[1]: *** [all] 错误 1 make[1]: Leaving directory `/data/software/Ice-3.4.2/cpp/src' make: *** [all] 错误 1
# make install安装过程报错:
../../lib/libIce.so: undefined reference to `libiconv' ../../lib/libIce.so: undefined reference to `libiconv_close' ../../lib/libIce.so: undefined reference to `libiconv_open' collect2: ld 返回 1 make[2]: *** [../../bin/transformdb] 错误 1 make[2]: Leaving directory `/data/software/Ice-3.4.2/cpp/src/FreezeScript' make[1]: *** [install] 错误 1 make[1]: Leaving directory `/data/software/Ice-3.4.2/cpp/src' make: *** [install] 错误 1
修改 测试
vim config/Make.rules.Linux找到143行这里
BASELIBS = -lIceUtil -lpthread -lrt -liconv
在最后面增长-liconv, 执行make和make instll命令等待编译完成.
三、编译PHP版本
# cd .. # cd php/ # vim config/Make.rules.php指定安装包路径:
prefix ?= /usr/local/ICE-3.4.2/Ice-$(VERSION) embedded_runpath_prefix ?= /usr/local/ICE-3.4.2/Ice-$(VERSION_MAJOR).$(VERSION_MINOR) #指定PHP安装路径 PHP_HOME ?= /usr/local/php安装编译
# make # make install四、设置ICE环境变量
# vi /etc/profile
export PHPPATH=/usr/local/ICE-3.4.2/Ice-3.4.2/php/: export ICE_HOME=/usr/local/ICE-3.4.2/Ice-3.4.2 export PATH=$PATH:$ICE_HOME/bin export LD_LIBRARY_PATH=$ICE_HOME/lib export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ICE_HOME使之生效
source /etc/profile测试是否成功:
icegridnode --version icegridadmin --version