grpc c++开发需要安装相关工具以及框架才能进行开发。

rz 远程上传文件

本地开发环境搭建:

1、编译相关工具 pkg-config autoconf automake Libtool shtool gflags等,后边会进行相关介绍,介绍文章来自于网络。

2、需要安装grpc编译按照后边文章编译并进行安装,protocol buffer建议按照第三方插件安装避免与grpc安装版本不匹配。

3、编译例子程序,能够正确编译运行说明程序没有问题。

4、通过例子程序扩展进行自己业务开发。

线上部署主要docker环境下:

pkg-config:

简介:

https://www.tianmaying.com/tutorial/pkgconfig

makefile文件:

介绍

https://seisman.github.io/how-to-write-makefile/introduction.html

autoconf automake

介绍

http://www.laruence.com/2009/11/18/1154.html

Libtool

介绍

https://zh.wikipedia.org/wiki/Libtool

https://www.ibm.com/developerworks/cn/aix/library/1007_wuxh_libtool/index.html

shtool

介绍

https://www.gnu.org/software/shtool/

gflags

介绍

https://blog.csdn.net/jcjc918/article/details/50876613

Protocol Buffer

介绍

https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html

https://colobu.com/2015/01/07/Protobuf-language-guide/

升级G++版本 通过yum命令升级可能不好用,需要自己安装新版本

https://www.cnblogs.com/wanpengcoder/p/5218583.html

https://blog.csdn.net/centnethy/article/details/81284657

brew是mac下安装工具命令

安装grpc相关

A、https://tcspecial.iteye.com/blog/2437365

一. 准备编译环境

安装各种依赖库,详见:Pre-requisites

  1. brew install autoconf automake libtool shtool gflags

二. 安装protobuf3

  1. git clone https://github.com/google/protobuf.git
  2. cd protobuf
  3. git checkout v3.5.0
  4. sh ./autogen.sh
  5. ./configure --prefix=/usr/local/protobuf/
  6. make && make install

三. 安装grpc

  1. git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
  2. cd grpc
  3. git submodule update --init
  4. make && make install

编译成功后会在/usr/local/bin/ 生成grpc各语言插件,如grpc_cpp_plugin,grpc_php_plugin等。

四. helloworld教程

详见:gRPC C++ Hello World

4.1 编译proto

  1. syntax = "proto3";
  2. option java_package = "ex.grpc";
  3. package helloworld;
  4. // The greeting service definition.
  5. service Greeter {
  6. // Sends a greeting
  7. rpc SayHello (HelloRequest) returns (HelloReply) {}
  8. }
  9. // The request message containing the user's name.
  10. message HelloRequest {
  11. string name = 1;
  12. }
  13. // The response message containing the greetings
  14. message HelloReply {
  15. string message = 1;
  16. }

4.2 生成stub

  1. protoc --cpp_out=. helloworld.proto
  2. protoc --grpc_out=. --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin helloworld.proto

4.3 编译运行

Makefile是通过pkg-config方式来查找protobuf, grpc库位置,可直接修改Makefile 指定protobuf, grpc库位置编译。

./greeter_server

./greeter_client

客户端打印hello world

https://www.jianshu.com/p/3479272f90bb

在着手 C++ 的 TensorFlow serving mnist client 的过程中,不断采坑,被环境安装折磨的不行。现本着学习回顾,特总结,方便后面同学避免在环境搭建上出现问题。本次完全新建了个环境,在新环境上实验成功。系统为: Ubuntu 16.04.

如果你只是单纯的想安装 protobuf 那么对于安装的 protobuf 版本并没有要求。但是如果要安装 gRPC 的话,那么需要和 gRPC 版本有所对应,否则私自安装个 protobuf 并没有太大意义,因为 clone 下来的 grpc 文件夹里就有对应的文件夹,在这里安装 protobuf 可以保证安装 grpc 不出错。安装 grpc 不建议先单独编译安装 protobuf,但是本着学习的目的,下面依次介绍了单独安装 protobuf 和安装 grpc&protobuf 的方法。

安装 protobuf

1.下载 protobuf 并解压。下载地址:https://github.com/google/protobuf/releases

2.进入解压后的文件目录,执行如下操作:

  • ./configure

通常建议安装到 /usr/local 目录下,执行 configure 时,指定 --prefix=/usr/local/protobuf 即可

  • make

  • make check

  • sudo make install

3.安装成功后,将它的 binlib 目录分别加入到 PATH 和 LD_LIBRARY_PATH 环境变量,以方便直接调用。

设置环境变量过程:编辑 /etc/profile,在文件末尾添加:

export PATH=$PATH:/usr/local/protobuf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib

安装 gRPC

1.安装依赖:

  • 首先安装 pkg-configsudo apt-get install pkg-config

  • 然后安装依赖文件:

sudo apt-get install autoconf automake libtool make g++ unzip
sudo apt-get install libgflags-dev libgtest-dev
sudo apt-get install clang libc++-dev

2.下载GRPC

git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init //更新第三方源码

4.安装 protobuf 源码:

cd third_party/protobuf/
git submodule update --init --recursive //确保克隆子模块,更新第三方源码
./autogen.sh //生成配置脚本
./configure //生成Makefile文件,为下一步的编译做准备,可以加上安装路径:--prefix=path
make //从Makefile读取指令,然后编译
make check //可能会报错,但是不影响
sudo make install

从 Makefile 读取指令,安装到指定位置,默认为 /usr/local/,也可以指定安装目录:--prefix=path。卸载的命令为 make uninstall

相关命令说明:

  • make clean:清除编译产生的可执行文件及目标文件 (object file,*.o)

  • make distclean:除了清除可执行文件和目标文件外,把 configure 所产生的 Makefile 也清除掉。

  • sudo ldconfig:更新共享库缓存

  • which protoc:查看软件的安装位置

  • protoc --version:检查是否安装成功

5.安装GRPC

cd ../..  //进入 grpc 根目录
make //从Makefile读取指令,然后编译
sudo make install

从 Makefile 读取指令,安装到指定位置,默认为 /usr/local/,具体的位置在 binlib 目录下。

6.测试

在 gRPC 目录下:

cd examples/cpp/helloworld/
make //编译
./greeter_server //服务器
./greeter_client //客户端

出现 Greeter received: Hello world 则表示安装成功。

作者:郑爽_Shaun
链接:https://www.jianshu.com/p/3479272f90bb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 
第一步安装protobuf不是必须的,因为第三方里面有protobuf安装。--------备注
 

C:

安装Homebrew mac下集成安装环境

https://blog.csdn.net/yemao_guyue/article/details/80575532

安装protobuf权限问题

https://blog.csdn.net/ccbrid/article/details/79169440

https://blog.csdn.net/qq_25147897/article/details/78544395

D:

编译demo

https://github.com/grpc/grpc/tree/master/examples/cpp/helloworld

编译demo问题

https://www.jianshu.com/p/cdbdda59e99f

拷贝protobuf头文件到usr/local下

mv protoc3/include/* /usr/local/include/

pkg-config编译问题

https://github.com/pjreddie/darknet/issues/916

E:linux下安装grpc

https://www.cnblogs.com/xuelisheng/p/10316431.html

其他:

google 开源项目风格

https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/

redis带注释连接

https://github.com/huangz1990/redis-3.0-annotated

使用grpc C++功能的更多相关文章

  1. .NET gRPC 核心功能初体验,附Demo源码

    gRPC是高性能的RPC框架, 有效地用于服务通信(不管是数据中心内部还是跨数据中心). 由Google开源,目前是一个Cloud Native Computing Foundation(CNCF)孵 ...

  2. 【译】gRPC vs HTTP APIs

    本文翻译自 ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者 Edison Zhou. 写在开头 现在,ASP.NET Core使开发人员可以构建gRPC服务. ...

  3. Akka-CQRS(9)- gRPC,实现前端设备与平台系统的高效集成

    前面我们完成了一个CQRS模式的数据采集(录入)平台.可以预见:数据的产生是在线下各式各样的终端系统中,包括web.桌面.移动终端.那么,为了实现一个完整的系统,必须把前端设备通过某种网络连接形式与数 ...

  4. gRPC(2):客户端创建和调用原理

    1. gRPC 客户端创建流程 1.1 背景 gRPC 是在 HTTP/2 之上实现的 RPC 框架,HTTP/2 是第 7 层(应用层)协议,它运行在 TCP(第 4 层 - 传输层)协议之上,相比 ...

  5. gRPC趁现在还没大火,抢先了解一下

    前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性.功能模块复用性等:各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信 ...

  6. Postman 支持 gRPC 了!继续领先 ~

    最近国产API管理工具比较热,几款产品在API管理层面做得也都还不错,但主要还是对HTTP相关的API管理,毕竟这类API的应用目前还是最为广泛的.但显然,还有不少其他应用场景目前没有覆盖到,DD在之 ...

  7. 5分钟学会 gRPC

    介绍 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架. 我也是近段时间有机会从零开始重 ...

  8. go grpc: connection reset by peer 的一种解决方案

    最近添哥一直反映,他手下的设备以grpc stream的方式向我服务端发送数据.偶然会收到错误.现象如下: 连接已经建立了一段时间,正常使用. 突然client.Send 返回 eof. 客户端有报错 ...

  9. docker 内部组件结构 -- docker daemon, container,runC

    Docker, Containerd, RunC : 从 Docker 1.11 开始, docker 容器运行已经不是简单地通过 Docker Daemon 来启动, 而是集成了Container, ...

随机推荐

  1. python基础08--迭代器,生成器

    1.1 迭代器 1.可迭代对象:str,list,tuple,set,dict, 迭代器:f(文件),range() 可迭代对象和迭代器都可以for循环 可迭代对象不会计数, 迭代器会计数,上面操作到 ...

  2. kylin Build过程问题排查:17 Step Name: Build Cube In-Mem

    Kylin Build执行到底17步时报错:17 Step Name: Build Cube In-Mem  ,错误截图如下: 点左下角的MRJob图标,打开查看错误信息: 从MRJob中的描述中可见 ...

  3. IOS/Safari下document对象的scrollHeight值比Chrome更大

    之前写滚动加载更多需求时,写了这样一段错误代码 应该获取滚动列表的scrollHeight.clientHeight和scrollTop而不是整个页面的. 因为整个页面不仅包括了滚动列表,还包括了头部 ...

  4. Python操作SQLite/MySQL/LMDB

    1.概述 1.1前言 最近在存储字模图像集的时候,需要学习LMDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此. 1.2环境 使用win7,Python 3.5.2. 2.SQLite ...

  5. Java 数组(二)基本操作

    一.数组的基本操作 1.数组遍历[重点] 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历.遍历也是数组操作中的基石.  方式一:使用索引下标方式 int[] array = { 15, 25, ...

  6. windows 2003 域控服务器导出全部hash的方法

    天下文章一大抄,我也是醉了... 一份“错误”的文章一遍又一遍的被转载,盲目转载,根本不细看.只会误导新手. 谈下windows2003域控下如何导出全部的hash信息. 1. 使用备份还原向导 2. ...

  7. Ubuntu下 安卓 adb 命令报:“insufficient permissions for device: user in plugdev group; ”问题的解决办法

    https://blog.csdn.net/freezingxu/article/details/80893025 在接入设备进行联机调试的时候,遇到了这样的问题: insufficient perm ...

  8. Android P(9.0) userdebug版本执行adb remount失败

    [DESCRIPTION]      在android P版本上如果按照“FAQ18076 android 6.0 M userdebug版本执行adb remount失败”的做法在userdebug ...

  9. 微信小程序获取用户手机号 记录 (PHP)

    1. 用户登录时需要获取 openid ,同时可以获取 session_key, 二者同时返回, 此时我们要将二者存储在服务端. 2. 小程序端 button 按钮拉起授权, 向api 传递 iv 和 ...

  10. Linux centos关机和重启命令

    Linux centos重启命令: 1.reboot   普通重启 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户 ...