Ice的安裝
從年初的一期《程式員》雜誌上瞭解到ICE以後,因為其對比於 CORBA具有簡單、高效、易用的特點,所以一直都有留意。之前也有一段時間下載了Ice 1.x版本和相應的文檔來研究,但因工作忙,中斷了一段時間。
Ice的首頁: http://www.zeroc.com
這幾天工作稍微輕鬆點,有點時間,就繼續研究Ice 2.1.1版本。在學習的過程中,免不了要安裝的。這篇文章就是想說說安裝的問題。
其實Ice-2.1.1安裝算是蠻簡單的。因為像比較新的Linux作業系統上,Ice所需的輔助軟體包都已經有了,如果你裝的系統確實沒有這些軟體,可以在Ice的下載頁面上下載到第三方的軟體包,然後安裝,安裝這些都不難,主要是要看軟體相應的readme和install類型的文檔。
我在Fedora 3上安裝,上面帶了expat, openssl, db4.2, bzip2,所以基本不用裝第三方的軟體。唯一一個問題是:Fedora 3上的db4.2沒有安裝db的C++開發庫,所以需要重新編譯安裝db。
=========== STEP 1:安裝db =============================
安裝db的文檔在db包的docs裡面有html格式的說明文檔,很簡單。解開db的tar/zip包後:
$cd db-ver
$cd build_unix
$../dist/configure --prefix=/usr --enable-cxx
$make
$su
#make install
========== STEP 2:安裝Ice 2.1.1包 ====================
解開Ice-2.1.1.tar.gz包後
$cd Ice-2.1.1
$vi config/Make.rules #修改prefix為/usr
$make
$su
#make install
這樣Ice就安裝好了。
========== STEP 3:安裝IcePy ============================
因為自己想結合之前學習python,剛好ice也支援python語言,所以決定安裝IcePy包,如果你只用C++開發的話,IcePy可以不裝。解開IcePy.xx.tar.gz後
$cd IcePy-2.1.1
$vi config/Make.rules
增加一行在檔案的最前面:
ICE_HOME=/usr
修改prefix=/usr
然後用root許可權
#ln -s /usr/lib/python2.4 /usr/python #不同版本的python,/usr/lib/pythonx.x目錄有點不同
$make
$su
#make install
#ln -s /usr/lib/IcePy.so /usr/lib/python2.4/IcePy.so
至於用兩個ln建立兩個串連主要是省去運行Ice python程式的時候,設定環境變數的麻煩。因為Ice Python的檔案都安裝到了python的預設目錄下了,這樣會方便很多。
附一個C++編譯的問題:
由於我按照書上的例子來學習Ice,所以檔案伺服器的伺服器端那章裡面的NodeI類定義如下:
class NodeI: virtual public Node {
public:
virtual std::string name(const Ice::Current &) const;
NodeI(const std::string &, const DirectoryIPtr &parent);
static Ice::ObjectAdapterPtr _adapter;
private:
const std::string _name;
DirectoryIPtr _parent;
NodeI(const NodeI &);
void operator=(const NodeI &);
};
裡面有static的類成員_adapter,由於久未用C++,不記得要在.cpp實現檔案裡加:
Ice::ObjectAdapterPtr Filesystem::NodeI::_adapter;
定義,所以g++串連老報沒有定義_adapter的錯誤,鬱悶了一段時間才記起來。而書上的例子並沒有提到定義這個東西,如果你是C++新手或像我這樣久未用C++的人,一時還找不著北呢。
轉載自:http://gigaboy.bokee.com