0、简介

ZeroC ICE 是指ZeroC公司(www.zeroc.com)的ICE(Internet Communications Engine)中间件平台。

目前ICE平台中包括IceIce-EIce 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框架的访问。

本文由乌合之众瞎写,如有错漏之处,敬请指正。http://www.cnblogs.com/oloroso/

1、下载源码

git clone https://github.com/zeroc-ice/ice.git

2、编译和安装

先安装依赖项libmcppopenssllmdb等。

sudo dnf install libmcpp-devel    openssl-devel lmdb-devel # defora下安装
sudo apt install libmcpp-dev libssl-dev # debian系下安装

编译并安装

make -j4    # 编译(时间比较久,可以把Makefile中对test的编译注释掉)
make prefix=/opt/zero-c-ice install

上面命令会编译所有支持语言的版本,如果不需要那么多,可以通过修改config/Make.rules来改变支持的语言。

打开config/Make.rules文件,跳到最后,修改supported-languages的值。

例如:

supported-languages ?= cpp python

或者在编译的时候直接指定语言。

make supported-languages='cpp python java js'
make supported-languages='cpp python java js' prefix=/opt/zero-c-ice install

如果需要支持java语言,在编译的时候会去下载gradle工具,所以需要确保能够正常访问https://gradle.org/

如果需要支持python语言,需要安装python开发包(sudo dnf install python-devel)。

如果需要支持javascript语言,需要安装npm的(sudo dnf install npm),此处会安装libuv/nodejs等。这里也需要能够正常连接到外网。

如果需要支持ruby语言,需要安装ruby开发包(sudo dnf install ruby-devel)。

如果需要支持php语言,需要安装php开发包(sudo dnf install ruby-php)。

3、测试

这里可以编写一个小的slice脚步测试一下。

test.ice

/*定义模块test*/
module test{
/*定义自定义结构类型person*/
struct person{
/*字符串类型量 name*/
string name; // 名字
/*整型量 age*/
int age; // 年龄
/*浮点数 weight*/
float weight; // 体重
};
/*定义一个接口,打印person信息*/
interface print{
/*定义打印person的方法*/
void printperson(person p);
};
};

使用slice2cpp来生成C++代码。

slice2cpp test.ice

slice2cpp工具怎么用,可以使用slice2cpp --help来查看。

4、补充 windows下编译ice

windows下编译比较简单。直接打开源码目录下的cpp\msbuild,找到对应版本的VS解决方案文件(例如我是使用的VS2015,则是ice.v140.sln),直接使用Visual Studio打开。然后直接编译即可。

编译的时候需要下载对应的nuget包,所以可能需要联网才行。

编译完成之后将在cpp\libcpp\bin目录下生成对应的库和可执行文件。

linux下编译Zero C ICE的更多相关文章

  1. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  2. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  3. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  4. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  5. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  6. 如何在Kali Linux下编译Windows Exploit

    前言 微软的Windows在企业或是个人应用领域占据着最大的市场份额,在渗透测试过程中你会经常遇到很多Windows的工作站和服务器.另一方面,大多数渗透测试人员主要使用基于Linux的发行版渗透测试 ...

  7. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  8. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

随机推荐

  1. [转]ThinkPHP中如何使用原生SQL

    From : http://huangqiqing123.iteye.com/blog/1540323 TP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要 ...

  2. Reloading Java Classes 201: How do ClassLoader leaks happen? Translation

    The original link : http://zeroturnaround.com/rebellabs/rjc201/ From ClassLoaders to Classes 从ClassL ...

  3. CentOS6.4 xen4.2 虚拟机 桥接网络设置

    安装好xen后,可以使用virt-manager来配置虚拟网络 virbr0,以及创建虚拟机 都使用virt-manager. [虽说可以使用xm create XX命令行根据脚本创建,但是从来都不知 ...

  4. 接收连接basic_socket_acceptor

    概述 TCP有一处和UDP不同的地方是TCP是面向连接的,TCP有建立连接.通信.关闭连接的操作,Boost.Asio提供了ip::tcp::acceptor用来接收新的TCP连接,底层由socket ...

  5. [leetcode]Simplify Path @ Python

    原题地址:https://oj.leetcode.com/problems/simplify-path/ 题意: Given an absolute path for a file (Unix-sty ...

  6. [leetcode]Reverse Words in a String @ Python

    原题地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/ 题意: Given an input string, reverse ...

  7. JS获取当前项目名

    代码如下: //获取当前网址,如: var curWwwPath=window.document.location.href; //获取主机地址之后的目录如:/Tmall/index.jsp var ...

  8. JS的scrollIntoView简单使用

    scrollIntoView方法滚动当前元素,进入浏览器的可见区域 el.scrollIntoView(); // 等同于el.scrollIntoView(true) el.scrollIntoVi ...

  9. 定时删除日志文件---linux定时清理日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  10. Android Fragment的使用(转载)

    可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 1.使用支持库 如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容. 如果您的 ...