ZeroC ICE 源码编译
本实验主要介绍如何在Ubuntu 14.04系统上编译安装ZeroC ICE,首先介绍一下ZeroC ICE。
ZeroC ICE是ZeroC公司开发的一套RPC中间件平台,号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯屏蔽。因此相比Corba,DCOM,SOAP,J2EE等的中间件技术,自然是集众多优点于一身,而却没有他们的缺点。
目前ICE平台中包括Ice,Ice-E,Ice Touch。
Ice为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如Visual Basic),Python,Ruby,PHP和ActionScript。也包括所有的ICE服务,例如Ice Grid,IceStorm等。
Ice-E是Ice在资源受限的平台上的一个实现,支持C++和嵌入式操作系统,例如Windows CE,Linux。Ice-E本身不包含任何服务,但是可以利用在Ice上提供的各种服务。因此,通过Ice-E,移动设备也能无缝的集成到分布式系统中。
Ice Touch是为iphone和ipod touch开发的版本,包括Object-C映射,支持Iphone OS,并为MAC OS X开发图形界面应用程序提供完整的Cocoa框架的访问。
下面是编译、安装ZeroICE的主要流程:
#下载源码
$ git clone https://github.com/zeroc-ice/ice.git
#安装依赖库libmcpp、openssl
$ sudo apt-get install libmcpp-dev libssl-dev libbz2-dev libexpat1-dev liblmdb-dev
$ cd ice-master
$ make -j4 V=s
$ sudo make install
编译安装成功后,目标文件安装在/opt目录下。测试运行过程如下:
1、编写文件demo.ice
module demo
{interface printer{void printerstr(string msg); };
};
server.cpp程序
#include <Ice/Ice.h>
#include <demo.h>
using namespace demo;
using namespace std;
class PrinterI : public printer {public:virtual void printerstr(const string & s,const Ice::Current &);
};
void
PrinterI::
printerstr(const string & s, const Ice::Current &)
{cout << s << endl;
}
int
main(int argc, char* argv[])
{int status = 0;Ice::CommunicatorPtr ic;try {ic = Ice::initialize(argc, argv);Ice::ObjectAdapterPtr adapter= ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000");Ice::ObjectPtr object = new PrinterI;adapter->add(object,ic->stringToIdentity("SimplePrinter"));adapter->activate();ic->waitForShutdown();} catch (const Ice::Exception & e) {cerr << e << endl;status = 1;} catch (const char * msg) {cerr << msg << endl;status = 1;}if (ic)ic->destroy();return status;
}
client.cpp
#include <Ice/Ice.h>
#include <demo.h>
using namespace demo;
using namespace std;int
main(int argc, char * argv[])
{int status = 0;Ice::CommunicatorPtr ic;try {ic = Ice::initialize(argc, argv);Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");printerPrx printer = printerPrx::checkedCast(base);if (!printer)throw "Invalid proxy";printer->printerstr("Hello World!");} catch (const Ice::Exception & ex) {cerr << ex << endl;status = 1;} catch (const char * msg) {cerr << msg << endl;status = 1;}if (ic)ic->destroy();return status;
}
2、生成demo.cpp
$ slice2cppdemo.ice
$ ls
demo.ice demo.h demo.cpp
3、编译运行
$ g++ -I. -oserver demo.cpp server.cpp -lIce -lpthread
$ g++ -I. -oclient demo.cpp client.cpp –lIce -lpthread
$ ./server
$./client
Hello World!
成功在server端打印Hello World!信息表示ZeroC ICE安装成功。
ZeroC ICE 源码编译相关推荐
- Qt的源码编译及QtE编译记录
============================================================== 作者:shanzongyingcao 网址:http://blog.csd ...
- java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实
好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...
- 5单个编译总会编译全部_玩转Android10(五)源码编译开发中常用命令
源码开发编译中,熟练掌握常用命令,可以提高开发工作效率.Android源码中,将相关的命令分为如下几类: 1.初始化源码编译环境 初始化编译环境,为后续提供如lunch.make.xxgrep.god ...
- mono和monodevelop源码编译安装
之所以用源码编译的方式安装mono和monodevelop,是因为通过yum安装的mono不是最新版本,而且monodevelop不能建 asp.net MVC3的工程. 而且通过源码安装,可以进一步 ...
- nginx源码编译、负载均衡及模块的扩展
1.nginx源码编译 实验环境: iptables和selinux关闭 redhat6.5 nginx:test1: 172.25.1.11 [root@test1 ~]# ls nginx-1.1 ...
- mac通过tree源码编译安装tree
通过tree源码编译安装 下载源码:curl -O ftp://mama.indstate.edu/linux/tree/tree-1.6.0.tgz 解压源码:tar xzvf tree-1.6 ...
- 干货|TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法工程师 安装平台 1 平台 目前Tensor ...
- Nginx 源码编译安装
Nginx 源码编译安装环境 Centos7 Nginx1.8.1 下载地址:http://nginx.org/download/ 选择自己想要的版本 我这边使用1.8.1,下载地址:http: ...
- 基本lnmp平台的搭建(源码编译)
lnmp :linux ,nginx ,mysql ,php 系统环境:rhel6.0 selinux and iptables disabled (这里我们都只用源码编译的方式) 1 ste ...
最新文章
- 根据标签分布来选择损失函数
- laravel 重写以及500错误
- 如何利用WebScarab绕过JS验证
- linux 下用ecipse 作用oracle 的客户端
- 关闭uboot MMU 会导致android2.3 S5pv210 系统不稳定?!why
- ubuntu 启动图形界面命令_Windows 10 远程连接 Ubuntu 18.04 Server图形界面
- 访问linux端口失败_教你如何配置Linux服务器防火墙端口规则
- Java并发(四)——synchronized、volatile
- 前景检测算法(五)--GMM,GMM2,GMG
- oracle建表空间、用户
- Windows Sockets网络编程读书笔记(及简单C/S实现)
- svn -- 客户端+服务端的下载安装及配置
- tp1900芯片对比7621a_MT7621A和MT7620A两个芯片各有什么特点?
- 2021年南京市高考成绩查询,2021年南京各高中高考成绩排名及放榜最新消息
- z反变换计算机控制,计算机控制4.Z变换.ppt
- python——爬虫豆瓣250
- 手摸手,带你用vue撸后台 系列一(基础篇)
- 【OSATE学习笔记】EMV2.aadl详解
- android视频播放框架Vitamio
- Gym - 100889H Hitting Points 计算几何+三分+二分
热门文章
- 论文阅读笔记《Fine-tuning Deep Neural Networks in Continuous Learning Scenarios》
- 职中计算机专业自我鉴定400字,职高计算机专业自我鉴定范文
- 【Python】项目实战一:外星人入侵 - 《Python编程:从入门到实践》
- 下载 com.mob.sdk:MobSDK 失败处理
- 【梳理】数据库系统概论 第8章 数据库编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程
- 香港下一代数字金融基建区块链论坛专家观点(一)
- linux挂载sda4,Linux挂载磁盘
- 经典二十四点程序游戏
- java static作用盘点
- noiLinux中编程工具的使用