c++的grpc例子

官方文档

grpc.io

安装cmake

  • Linux
sudo apt install -y cmake
  • mac
brew install cmake

终端输入以下命令查看版本:

cmake --version

cmake version 3.21.2

安装gRPC的其他工具

下面有gRPC的依赖工具:

  • Linux
sudo apt install -y build-essential autoconf libtool pkg-config
  • mac
brew install autoconf automake libtool pkg-config

克隆grpc及其子模块

git clone --recurse-submodules -b v1.40.0 https://github.com/grpc/grpc

构建和安装 gRPC 和协议缓冲区

以下命令构建并在本地安装 gRPC 和 Protocol Buffers:

$ cd grpc
$ mkdir -p cmake/build
$ pushd cmake/build
$ cmake -DgRPC_INSTALL=ON \
      -DgRPC_BUILD_TESTS=OFF \
      -DCMAKE_INSTALL_PREFIX=`/usr/local/gRPC` \
      ../..
$ make -j
$ make install
$ popd

这里需要将安装路径的bin目录放到系统环境内!!!

Mac

使用如下命令打开配置文件:

vim ~/.bash_profile

将下面复制进去,保存退出

export PATH=$PATH:/usr/local/gRPC/bin

Linux

使用如下命令打开配置文件:

vim ~/.bashrc

将下面复制进去,保存退出

export PATH=$PATH:/usr/local/gRPC/bin

构建示例

这部分代码包含在上面克隆的仓库内。
1、切换到示例目录:

cd examples/cpp/helloworld

2、使用cmake以下命令构建示例:

$ mkdir -p cmake/build
$ pushd cmake/build
$ cmake -DCMAKE_PREFIX_PATH=`/usr/local/gRPC` ../..
$ make -j

在这里make -j时遇见了一个错误:

/usr/local/gRPC/include/grpcpp/impl/codegen/sync.h:35:10: fatal error: 'absl/synchronization/mutex.h' file not found
#include "absl/synchronization/mutex.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

这是因为在目录下缺失文件造成,用下面的命令进行copy

sudo cp -r ./grpc/third_party/abseil-cpp/absl /usr/local/gRPC/include

/usr/local/gRPC和上main保持一致,即安装gRPC的目录。
然后重新执行make -j4,成功后在build目录下已经生成可执行文件。

huzd@huzddeMacBook-Pro build % ls
CMakeCache.txt		greeter_async_client	greeter_callback_server	helloworld.grpc.pb.h
CMakeFiles		greeter_async_client2	greeter_client		helloworld.pb.cc
Makefile		greeter_async_server	greeter_server		helloworld.pb.h
cmake_install.cmake	greeter_callback_client	helloworld.grpc.pb.cc	libhw_grpc_proto.a

运行服务:

huzd@huzddeMacBook-Pro build % ./greeter_server 
Server listening on 0.0.0.0:50051

运行客户:

huzd@huzddeMacBook-Pro build % ./greeter_client
Greeter received: Hello world
huzd@huzddeMacBook-Pro build % ./greeter_client
Greeter received: Hello world
huzd@huzddeMacBook-Pro build % ./greeter_client
Greeter received: Hello world
huzd@huzddeMacBook-Pro build % 

已经实现功能的调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值