前面我们讲过了在linux环境下通过rpm的方式来安装ICE,这种安装方式可以是比较简单的,自己在安装过程中发现后面PHP无法装在IcePHP.sp模块,也有可能自己在安装过程中某个地方出错了。又尝试通过直接编译的方式去安装ICE,PHP也正常装在了IcePHP.so模块,大功告成,这里记录一下方法。
以安装ICE-3.4.2版本为例,为了方便管理,将ICE相关的软件都安装到/usr/local/ICE-3.4.2/目录下。
一、安装第三方包:ThirdParty-Sources-3.4.2
1、解压安装包
# tar zxvf ThirdParty-Sources-3.4.2.tar.gz
# cd ThirdParty-Sources-3.4.2
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
3、安装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
4、安装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
5、安装expat
expat 是一个 XML parsing C library。
# 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
6、安装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 install
二、安装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命令等待编译完成.
至此,安装ICE完毕。
3、编译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
4、设置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
声明: 本文采用
BY-NC-SA 协议进行授权. 转载请注明转自:
linux环境下编译安装ICE