转载: http://dreamlikes.cn/archives/555
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C#。
gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
测试环境:
系统是新安装的CentOS 7.2
|
[root@localhost~]# cat /etc/redhat-release
CentOS Linux release7.2.1511(Core)
|
一、YUM安装相关工具
|
yum install-ygcc-c++autoconf libtool
yum groupinstall-y"Development Tools"
|
二、下载gRPC源码和相关子模块
这步可能出现失败或者网速慢的情况(原因你懂的),多执行几次直到完全下载完毕为止。
|
git clonehttps://github.com/grpc/grpc.git
cdgrpc
git submodule update--init
|
三、编译安装protobuf
这个步骤有个地方要下载googlecode的里面的代码,国内正常来说是下载不下来的(除非有梯子),所以要换个下载地址:
|
[root@localhost grpc]# cd third_party/protobuf/
[root@localhost protobuf]# vim autogen.sh
|
找到这行:
|
curl$curlopts-Ohttps://googlemock.googlecode.com/files/gmock-1.7.0.zip
|
修改为:
|
curl$curlopts -L-ogmock-1.7.0.ziphttps://github.com/peter-wangxu/gMock/archive/1.7.0.zip
|
然后编译安装即可:
|
[root@localhost protobuf]# ./autogen
[root@localhost protobuf]# ./configure
[root@localhost protobuf]# make
[root@localhost protobuf]# make install
[root@localhost protobuf]# ldconfig # refresh shared library cache.
[root@localhost protobuf]# which protoc
/usr/local/bin/protoc
[root@localhost protobuf]# protoc --version
libprotoc3.0.0
|
四、编译安装gRPC
|
[root@localhost protobuf]# cd ../..
[root@localhost grpc]# make
[root@localhost grpc]# make install
|
执行make install的时候,我这里有错误提示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Warning:it looks like protoc3.0.0+isn't installed on your system,
which means that you won'tbe able tocompile.proto files foruse
with gRPC.
Ifyou are just using pre-compiled protocol buffers,oryou otherwise
have no need tocompile.proto files,you can ignore this.
Ifyou doneed protobuf forsome reason,you can download andinstall
it from:
https://github.com/google/protobuf/releases
Once you've done so,you can re-run thischeck by doing:
make verify-install
|
明明是有安装protoc的,但是没检测到,网上找了资料说这个问题好像是不影响的。
五、Demo测试
官方自带有个HelloWorld的Demo,可以编译这个Demo看是否我们已经安装成功了。
|
[root@localhost grpc]# cd examples/cpp/helloworld/
[root@localhost helloworld]# make
|
结果报错了:
|
Packagegrpc++was notfound inthe pkg-config search path.
Perhaps you should add the directory containing`grpc++.pc'
to the PKG_CONFIG_PATH environment variable
No package 'grpc++' found
Package grpc was not found in the pkg-config search path.
Perhaps you should add the directory containing `grpc.pc'
tothe PKG_CONFIG_PATH environment variable
|
意思是找不到环境变量PKG_CONFIG_PATH,解决方法是把环境变量加上去:
在gRPC目录下保存文件actviate.sh:
|
DIR="$( cd "$(dirname"${BASH_SOURCE[0]}")" && pwd )"
export PATH=$PATH:$DIR/bins/opt:$DIR/bins/opt/protobuf
export CPATH=$DIR/include:$DIR/third_party/protobuf/src
export LIBRARY_PATH=$DIR/libs/opt:$DIR/libs/opt/protobuf
export PKG_CONFIG_PATH=$DIR/libs/opt/pkgconfig:$DIR/third_party/protobuf
export LD_LIBRARY_PATH=$DIR/libs/opt
|
然后执行:
|
[root@localhost grpc]# source actviate.sh
[root@localhost grpc]# cd examples/cpp/helloworld/
[root@localhost helloworld]# make
|
编译成功。(注意,每次新开终端编译或运行程序,都要执行actviate.sh,除非把环境变量设成永久有效)
然后运行服务端,监听的是50051端口:
|
[root@localhost helloworld]# ./greeter_server
I071909:09:11.798702503 5076ev_epoll_linux.c:85] epoll engine will be using signal:36
D071909:09:11.798857929 5076ev_posix.c:106] Using polling engine:epoll
Server listening on0.0.0.0:50051
|
在另外一个终端执行客户端程序:
|
[root@localhost helloworld]# ./greeter_client
I071909:10:04.431843293 5142ev_epoll_linux.c:85] epoll engine will be using signal:36
D071909:10:04.432006262 5142ev_posix.c:106] Using polling engine:epoll
Greeter received:Hello world
|
成功!
分享到:
相关推荐
Centos7下安装MongoDB Centos7下安装MongoDB是指在Centos7操作系统中安装和配置MongoDB数据库的过程。MongoDB是一个基于分布式文件存储的NoSQL数据库,由C++语言编写,运行稳定,性能高旨在为 WEB 应用提供可扩展的...
grpc-all-1.48.0.tar.gz 和 cpprestsdk-all-2.10.18.tar.gz 在 CentOS7上使用 g++9.3 编译后的头文件和库文件,其中 etcd-cpp-apiv3 依赖的 boost 和 openssl 库都拷贝到了压缩包中,可以直接移植到其他服务器上使用...
CentOS7 下安装 JDK1.8 详细过程 CentOS7 下安装 JDK1.8 需要经历卸载系统自带的 OpenJDK、下载 JDK、解压安装 JDK 和配置 JDK 环境变量四个步骤。 卸载系统自带的 OpenJDK 在 CentOS7 中,默认情况下已经安装了 ...
CentOS7下安装oracle11g具体步骤
centos7离线安装bison
为了能在CentOS 7上高效地运行LAMMPS,特别是利用其并行计算能力,本文将详细介绍如何在该操作系统环境下安装LAMMPS及其依赖库FFTW和MPICH。 #### 安装准备 在开始之前,请确保已经拥有CentOS 7系统的root权限或...
在没有网络连接的情况下,为CentOS 7系统离线安装Vim是一个常见需求,特别是对于那些运行在隔离环境或服务器上的系统。本教程将详细介绍如何在CentOS 7上进行离线安装Vim。 首先,你需要获得一个包含Vim安装文件的...
CentOS 7 文本安装是 CentOS 7 操作系统的安装方式之一,它提供了一个基于文本的安装界面,用户可以通过键盘输入命令来完成安装。下面是 CentOS 7 文本安装过程中的知识点: 1. 启动机器:在安装 CentOS 7 之前,...
centos7离线安装bzip2
CentOS7离线安装最新版本Podman-4.1.1版本。 当前容器的发展,对Docker逐渐远离,拥抱Containerd和Podman,目前Podman操作基本与Docker一致,让用户从Docker迁移至Podman成为了可能。 由于CentOS7.9默认安装的都是...
首先,你需要准备一个包含所有必需软件包的压缩文件,如"centos7离线安装postgres10"。这个压缩包应该包括以下内容: 1. PostgreSQL 10的RPM包:通常包括`postgresql10`, `postgresql10-server`, `postgresql10-...
这个压缩包"centos7离线安装ntp安装包"包含了所需的文件。解压压缩包后,你会找到NTP的RPM包,通常命名为`ntp.x86_64.rpm`或类似的名称,以及可能包含的安装指南和配置文件。 离线安装NTP的步骤如下: 1. **安装...
在Linux CentOS 7环境下,离线安装telnet是一项常见的任务,尤其在无法访问公网的服务器上。本教程将详细介绍如何通过RPM包进行离线安装。以下是一个详细步骤的指导: 1. **检查已安装软件包**: 使用`rpm`命令来...
CENTOS 7 下安装 multipath存储多路径软件 安装流程: CENTOS 7 最小化安装 设置好存储交换机(我的是博科) 存储空间(我的是联想V7000) 注意:此教程是全新安装 原有空间从新挂载 数据重要的 不要做格式化下面这...
centos7离线安装gcc-c++
安装步骤参考:https://blog.csdn.net/chkai123/article/details/126229727 docker离线安装 arm架构下离线安装docker docker centos7离线安装docekr 离线安装docker arm架构下安装docker arm架构centos7安装docker
centos7离线安装http服务器的rpm包
"CentOS7安装指南" 本指南将指导您完成 CentOS 7 的安装过程,涵盖从虚拟机设置到安装完成后的基本配置。 虚拟机设置 在开始安装 CentOS 7 之前,需要设置虚拟机的网络适配器模式为“桥接模式”。这将允许虚拟机...