ICE专题:ICE在Linux下的安装
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++的人,一时还找不着北呢。