ICE专题:ICE在Linux下的安装

浪子不回头ぞ 提交于 2020-03-14 22:23:48

 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!