俗话说分享是学习的重要途径之一,提高自己的过程,学习,研究,应用,解决问题,总结,分享;闲来无事时便可总结下自己学习过的知识,把之前遇到过的问题也上升到方法论,把自己踩过的坑也罗列出来以防重蹈覆辙!好了,废话少说,书归正转!

本系列讲座全部是以C++部分为题讲解ICE的各个部分,从入门到精通吧;说的有点高大上了,说白了就是对我自己知识点的一个梳理吧,里面有什么错误和误导的地方也请大方的指出~~;工欲善其事必先利其器,我们的后台服务全部使用linux作为开发环境,对,ubuntu or debian都可以,哦,对了,最好64位。那接下来我们开始一阳指和六脉神剑的修炼之旅。使用的是ubuntu server 64位,其实那个版本无所谓,版本新了,系统中g++编译器支持版本高些;

berli@ubuntu64:~/Test$ cat /etc/issue
Ubuntu 15.10 \n \l

更新ubuntu的最新安装信息

berli@ubuntu64:~$ sudo apt-get update

安装git以便我们获取最新的源代码,一个类似svn的东东,但git是比较先进和代表未来发展方向的,建议学习下

<span style="font-size:18px;">berli@ubuntu64:~$ sudo apt-get install git</span>

下载ICE最新的代码

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

berli@ubuntu64:~/Test$ git clone --recursive https://github.com/zeroc-ice/ice.git




安装编译所需要的各种依赖包,否则直接编译时会报下面的错误

sudo apt-get install libssl-dev liblmdb-dev libbluetooth-dev libdbus-1-dev libbz2-dev

make: pkg-config: Command not found
make: pkg-config: Command not found
Compiling [amd64-static] src/Slice/Grammar.cpp
Compiling [amd64-static] src/Slice/Scanner.cpp
Compiling [amd64-static] src/Slice/CPlusPlusUtil.cpp
Compiling [amd64-static] src/Slice/JavaUtil.cpp
Compiling [amd64-static] src/Slice/Parser.cpp
Compiling [amd64-static] src/Slice/PythonUtil.cpp
Compiling [amd64-static] src/Slice/PHPUtil.cpp
。。。。。
/usr/bin/ld: cannot find -lmcpp
/usr/bin/ld: cannot find -lcrypto
collect2: error: ld returned 1 exit status In file included from src/IceBT/Engine.h:14:0,
from src/IceBT/Engine.cpp:10:
src/IceBT/Config.h:16:33: fatal error: bluetooth/bluetooth.h: No such file or directory src/IceBT/DBus.cpp:15:23: fatal error: dbus/dbus.h: No such file or directory
compilation terminated.

Berkeley DB下载,编译,安装

下载:

Skip
to end of metadata

$ wget https://zeroc.com/download/berkeley-db/db-5.3.28.NC.tar.gz

解压:

$ tar xzf db-5.3.28.NC.tar.gz

必须给bdb打patch,否则编译后无法使用

$ cd db-5.3.28.NC/build_unix

$  patch -p0 < ../db/patch.db.5.3.28

$ ../dist/configure --enable-cxx --enable-java

编译&安装

$ make

$ sudo make install

On a 64-bit platform, you need to create a lib64 symbolic link to the lib directory:

$ cd /opt/db53
$ ln -s lib lib64
安装mcpp,从zeroic的给的github下载源码
Clone the zeroc-inc/mcpp repository hosted on GitHub:
$ git clone https://github.com/zeroc-ice/mcpp.git

进入目录,make,sudo make install就可以了

也可以直接下载mcpp,按照下面步骤执行命令,编译,安装

http://prdownloads.sourceforge.net/mcpp/mcpp-2.7.2.tar.gz?download
tar xvf mcpp-2.7.2.tar.gz
cd mcpp-2.7.2
patch -p0 < ../mcpp/patch.mcpp.2.7.2
./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared
make && make install

OK,安装上面依赖的各种开源库,我们现在请我们的主角ICE登场,万事俱备只欠东风~,进入cd ice/cpp目录,开始make,

经过漫长的编译时间后,执行sudo make install完成了安装;到此,我们完成了ice编译环境的搭建。

ICE默认是安装到/opt目录,我们要拷贝到/usr/local/bin(当然你也可以/usr/bin)

把ICE的bin文件拷贝到/usr/local/bin

sudo cp /opt/Ice-3.7a3/bin/ /usr/local/bin/

测试下slice2cpp

微服务:ICE 入门之 编译环境搭建的更多相关文章

  1. Spring cloud微服务安全实战-7-11PinPoint+SpringBoot环境搭建

    微服务的最后一个组件, 调用链监控,一个请求进来以后,经过N多个微服务,例如a调用了b.b又调用了c,那么在这个过程中看到,整个的调用的链路,然后每一段调用所耗费的时间,帮你去分析你的系统如果出现瓶颈 ...

  2. 若依微服务版本 Windows下开发环境搭建

    看了若依官网的教程,搭建环境还是踩了坑,简单整理一下 1.下载地址:https://gitee.com/y_project/RuoYi-Cloud 2.本地环境(仅供参考) JDK1.8 Mysql  ...

  3. Spring cloud微服务安全实战-7-8ELK+SpringBoot环境搭建

    采集不可聚合的离散的.日志信息的e ELK是三个系统的简称 LogStash:用来做日志的收集.过滤.格式转换 Kibana:和普罗米修斯的grafana一个意思.主要用来展示数据. 用docker来 ...

  4. C语言编程入门之--第二章编译环境搭建

    第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...

  5. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  6. AG-Admin微服务框架入门

    AG-Admin微服务框架入门  @qq群:一群: 837736451  二群 169824183 一 概要介绍 AG-Admin后台地址:https://gitee.com/minull/ace-s ...

  7. 微服务(入门四):identityServer的简单使用(客户端授权)

    IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...

  8. 微服务(入门一):netcore安装部署consul

    环境准备  vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul  1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...

  9. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

随机推荐

  1. FATFS在SD卡里,写入多行数据出的问题

    串口接收的数据存入数组,然后把数组截取有效部分,存入SD卡里的一行没有问题 但是从SD卡读出这一行之后,重新写入SD卡就有了问题,经过调试发现,错误在于  \n 一直是这一串数据,为什么会出错呢??? ...

  2. 解决java中ZipFile解压缩时候的中文路径和乱码问题

    JAVA中对jar文件或zip文件解压的时候,能够使用JDK内置的API:JarFile和ZipFile,在windows下解压这2种格式文件的时候,常常报下面错误: Exception in thr ...

  3. Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  4. [CSS] Dynamically Size Elements with Pure CSS

    Learn how to size elements based on the dimensions of the viewport, even when the browser is resized ...

  5. 并发队列ConcurrentLinkedQueue 和 阻塞队列LinkedBlockingQueue用法

    在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出).Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQ ...

  6. IOC功能以及相关的配置

    功能: 控制反转,将对象的创建权反转给Spring可以解决程序耦合性高的问题,大概的意思就是将程序运行时所需要的资源.数据,全部让Spring供给,防止程序与程序之间联系过高,而出现耦合性高的问题. ...

  7. windows安装rabbitMQ服务

    简介: RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. windows安装rabbitMQ服务步骤: 首先需要安装 Erl ...

  8. Linux环境下Apache ActiveMQ 基本安装

    原文链接:https://www.jianshu.com/p/1c017088aa95 在linux上安装mq,并映射到外网.1.Apache ActiveMQ安装基本条件请参考链接:2.下载Apac ...

  9. Ajax基础与Json应用(一)

    一.Ajax概念 Ajax是异步的javacript和xml 发音: Ajax [ˈeɪˌdʒæks] 二.同步与异步 传统方式(同步):一个请求对应一个回应,他们是同步的,回应不完成,没办法对这个页 ...

  10. hdu 4059 The Boss on Mars

    The Boss on Mars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...