写点什么

gRPC C++ 开发环境搭建

作者:赖猫
  • 2022 年 6 月 13 日
  • 本文字数:2621 字

    阅读完需:约 9 分钟

特别需要强调,grpc 需要 6.3 以上的 gcc/g++版本,如果低于此版本的需要参考文档进行升级。


  1. cmake 、gcc 的版本, ubuntu16.04 默认的版本不支持。


1 安装必要的依赖工具

 

安装必要的依赖工具

sudo apt-get install autoconf automake libtool
复制代码

 

如果 cmake 低于 3.15, gcc/g++ 低于 7.0 ,请根据文档进行安装。查看版本的方式



# 检查cmake版本cmake -version# 检查gcc/g++版本gcc -vg++ -v
复制代码

 

1.1 安装 cmake

可以下载更新的版本:


最低版本为 3.15。

1. 卸载已经安装的旧版的 CMake

sudo apt-get autoremove cmake
复制代码

2. 文件下载解压

wget https://cmake.org/files/v3.23/cmake-3.23.0-linux-x86_64.tar.gz
复制代码

解压:

tar zxf cmake-3.23.0-linux-x86_64.tar.gz
复制代码

查看解压后目录:

tree -L 2 cmake-3.23.0-linux-x86_64
cmake-3.23.0-linux-x86_64├── bin│ ├── ccmake│ ├── cmake│ ├── cmake-gui│ ├── cpack│ └── ctest├── doc│ └── cmake├── man│ ├── man1│ └── man7└── share ├── aclocal ├── applications ├── bash-completion ├── cmake-3.23 ├── emacs ├── icons ├── mime └── vim
复制代码

bin 下面有各种 cmake 家族的产品程序.

3. 创建软链接

注: 文件路径是可以指定的, 一般选择在/opt/usr 路径下, 这里选择/opt

sudo mv cmake-3.23.0-linux-x86_64 /opt/cmake-3.23.0sudo ln -sf /opt/cmake-3.23.0/bin/*  /usr/bin/
复制代码

 

4. 测试版本

ubuntu@VM-16-11-ubuntu:~/rpc$ cmake -versioncmake version 3.23.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
复制代码

 

1.2 安装 gcc/gdb

升级 gcc 和 gdb 的版本,至少需要 6.3 以上的版本。

 

注意:如果已经是高于 7.0 不需要再次安装。

注意:如果已经是高于 7.0 不需要再次安装。

 

目标: 安装 gcc g++ 7 的安装包

  1. 安装

sudo apt-get install -y software-properties-commonsudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt updatesudo apt install g++-7 -y 
复制代码

 

  1. 建立软连接并检查


sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 \                         --slave /usr/bin/g++ g++ /usr/bin/g++-7 sudo update-alternatives --config gccgcc -vg++ -v
复制代码


显示 7.5 的版本。


2 编译 grpc

推荐使用 cmake 的方式进行编译。 grpc 安装过程比较依赖网络的通畅性(容易被墙),我是租用了腾讯云香港服务器下载的 grpc 源代码,他不仅是 grpc 源码本身,还依赖了很多第三方库,比如 protobufer。大家可以直接使用我提供的源码包(900+MB,记得先解压)进行编译。

 

如果不能翻墙,直接采用我提供的压缩包 grpc-v1.45.2.tar.bz2,则解压


解压方式: tar -jxf grpc-v1.45.2.tar.bz2
复制代码

解压完直接跳到步骤 4.编译和安装。如果能翻墙则可以从 步骤 1. 下载源码开始。


  1. 下载源码

git clone  https://github.com/grpc/grpc
复制代码

 

  1. 查看版本并选择合适的版本,这里选择 v1.45.2 相对较新的版本

git taggit checkout v1.45.2
复制代码

查看此时 grpc 目录内容的大小 du -h --max-depth=1, 可以看到 427M 左右


ubuntu@VM-16-11-ubuntu:~/rpc/grpc$ du -h --max-depth=1348M    ./.git32K ./summerofcode1.5M    ./doc6.5M    ./tools4.0K    ./spm-core-include24M ./test80K ./cmake3.0M    ./third_party4.0K    ./spm-cpp-include1.5M    ./templates8.0K    ./.bazelci1.9M    ./include5.0M    ./examples34M ./src268K    ./etc64K ./.github284K    ./bazel427M    .
复制代码
  1. 下载第三方依赖库,下载完后会发现整个 grpc 目录内容明显变大

git submodule update --init
复制代码

再次查看 目录大小,占用了 1.3G

ubuntu@VM-16-11-ubuntu:~/rpc/grpc$ du -h --max-depth=1899M    ./.git32K ./summerofcode1.5M    ./doc6.5M    ./tools4.0K    ./spm-core-include24M ./test80K ./cmake291M    ./third_party4.0K    ./spm-cpp-include1.5M    ./templates8.0K    ./.bazelci1.9M    ./include5.0M    ./examples34M ./src268K    ./etc64K ./.github284K    ./bazel1.3G    
复制代码

 

  1. 编译和安装

mkdir -p cmake/buildcd cmake/buildcmake ../..makesudo make install
复制代码

3 protobuf 安装

不用手动安装 protobuf,不然版本可能和 grcp 不匹配,必须在 grpc 执行 git submodule update --init 命令之后生成的 third_party/protobuf 里面编译安装对应的 protobuf。

cd third_party/protobuf/./autogen.sh ./configure --prefix=/usr/localmake
sudo make installsudo ldconfig # 使得新安装的动态库能被加载
protoc --version显示3.19.4
复制代码

4 测试环境

编译 helloworld

cd grpc/examples/cpp/helloworld/mkdir buildcd build/cmake ..make登录后复制
复制代码

启动服务和客户端

# 启动服务端,监听在50051端口./greeter_serverServer listening on 0.0.0.0:50051# 启动客户端,服务端返回Hello world./greeter_client Greeter received: Hello world
复制代码

5 参考

ubuntu搭建grpc for C++开发环境wx5bb365de633ed的技术博客51CTO博客 该文档提供修改 grpc 第三方库下载地址的方式进行安装。

 

6 辅助-使用 scp 命令,远程上传下载文件/文件夹

这里只是提供一种方式供大家可以在服务器之间传递文件,不是该节课程的内容,仅供参考。


  1. 从服务器下载文件

scp username@servername:/path/filename /local/path
复制代码

例如: scp ubuntu@192.168.1.222:/ubuntu/data/data.txt /desktop/ubuntu 把 192.168.1.222 上的/ubuntu/data/data.txt 的文件下载到/desktop/ubuntu 目录中

  1. 上传本地文件到服务器

scp /local/path/local_filename username@servername:/path
复制代码

例如: scp /ubuntu/learning/deeplearning.doc ubuntu@192.168.1.222:/ubuntu/learning 把本机/ubuntu/learning/目录下的 deeplearning.doc 文件上传到 192.168.1.222 这台服务器上的/ubuntu/learning 目录中

  1. 从服务器下载整个目录

scp -r username@servername:/path /path
复制代码

例如: scp -r ubuntu@192.168.1.222:/home/ubuntu/data /local/local_dir “-r”命令是文件夹目录,把当前/home/ubuntu/data 目录下所有文件下载到本地/local/local_dir 目录中

  1. 上传目录到服务器

scp  -r  /path  username@servername:/path
复制代码

例如: scp -r /ubuntu/test ubuntu@192.168.1.222:/ubuntu/tx “-r”命令是文件夹目录,把当前/ubuntu/test 目录下所有文件上传到服务器的/ubuntu/tx/目录中


C++ GRPC使用讲解


用户头像

赖猫

关注

C/C++Linux服务器开发学习群960994558 2020.11.28 加入

纸上得来终觉浅,绝知此事要躬行

评论

发布
暂无评论
gRPC C++开发环境搭建_c_赖猫_InfoQ写作社区