前面咱們講過了在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