ubuntu 16.04 安装 gRPC for C++

本文档详细介绍了如何在Ubuntu16.04上从源码编译安装gRPC v1.32.0,包括下载依赖、修改.gitmodules、编译安装步骤以及验证示例程序的运行。同时,提供了在国内镜像gitee上获取源码的方案,以解决github下载速度慢的问题。
摘要由CSDN通过智能技术生成

gRPC没有提供C++版本的ubuntu 16.04 预编译包,所以需要通过源码自行编译安装。
官方git库地址:https://github.com/grpc/grpc
由于github上部分较大的库下载很慢,所以我把所有相关的库镜像到国内的gitee上了,地址:https://gitee.com/zch-grpc/grpc

  1. 下载代码:
git clone https://gitee.com/zch-grpc/grpc.git
cd grpc
  1. 选择要编译的版本,我选择的版本是v1.32.0
git checkout origin/zch-v1.32.0
  1. 根据相应版本的编译说明编译安装,参考https://github.com/grpc/grpc/blob/v1.32.0/BUILDING.md

    1. 下载依赖项,为了从gitee下载依赖项,我从tag v1.32.0创建了分支zch-v1.32.0,修改了.gitmodules文件中的库路径,如果选择其他版本可以参考修改
git submodule update --init

特殊说明:根据官方文档的说明,想要使用cmake编译并安装时,如果cmake版本低于3.13,需要使用以下命令生成makefile:

cmake ../..   -DgRPC_INSTALL=ON                \
              -DCMAKE_BUILD_TYPE=Release       \
              -DgRPC_ABSL_PROVIDER=package     \
              -DgRPC_CARES_PROVIDER=package    \
              -DgRPC_PROTOBUF_PROVIDER=package \
              -DgRPC_SSL_PROVIDER=package      \
              -DgRPC_ZLIB_PROVIDER=package

生成过程中可能会提示absl库找不到等错误,此时说明系统中没有预安装这些库,需要先安装相应的库。
以absl为例,下载依赖项时已经将源码下载到third_party/abseil-cpp目录下,只需要到该目录下进行编译安装即可,注意:需要编译安装动态库(.so)版本

cd third_party/abseil-cpp
mkdir build
cd build
cmake -DCMAKE_CXX_STANDARD=11 -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
cd ../../..
2. 编译安装
mkdir -p cmake/build
cd cmake/build
cmake ../..   -DgRPC_INSTALL=ON                \
              -DCMAKE_BUILD_TYPE=Release       \
              -DgRPC_ABSL_PROVIDER=package     \
              -DgRPC_SSL_PROVIDER=package      \
              -DgRPC_ZLIB_PROVIDER=package     \
              -DgRPC_RE2_PROVIDER=package
make
sudo make install              

注意:如果cmake时有类似 gRPC_INSTALL will be forced to FALSE because gRPC_RE2_PROVIDER is “module” 输出说明需要将相应的模块设置为package模式才能实现grpc安装,如果改为package模式后cmake提示找不到相应的模块,需要手工安装该模块。
3. 编译示例程序,验证

cd examples/cpp/helloworld
mkdir build
cd build
cmake ..
make

先运行 ./greeter_server
再运行 ./greeter_client
会输出

Greeter received: Hello world

说明安装运行正确。

  1. 与python版本交互

python版本的安装并没有碰到问题,就不特殊说明了,请参考官方文档。

在另外一台机器上运行python版本的server:

cd examples/python3
python3 greeter_server.py

在本地运行C++版本的client,需要指定服务器地址和端口:

./greeter_client --target=172.17.0.2:50051

同样会输出:

Greeter received: Hello, world!

说明安装运行正确。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞花丝雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值