grpc的安装和使用

强烈建议有不明白的地方,还是要看官方说明:https://grpc.io/docs/quickstart/cpp/

1.安装

项目代码:https://github.com/grpc/grpc
安装过程说明:https://github.com/grpc/grpc/blob/master/BUILDING.md

yum install build-essential autoconf libtool pkg-config // yum安装nothing to do
git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
make该步不通过
make报错,
解决方法:cd third_party/protobuf/,执行./autogen.sh,编译安装,再到grpc目录执行make
cd third_party/protobuf
sudo ./autogen.sh
sudo ./configure
make
sudo make install
make依然报错:
/usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.18' not found (required by /home/stephen/Documents/tools/grpc/bins/opt/grpc_cpp_plugin) /usr/lib64/libstdc++.so.6: versionCXXABI_1.3.5’ not found (required by /home/stephen/Documents/tools/grpc/bins/opt/grpc_cpp_plugin)
原因:升级gcc版本时,生成的动态库没有替换老版本的动态链接库
解决方法:修改动态链接库,然后make编译通过
$ cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64
$ rm -rf /usr/lib64/libstdc++.so.6
$ ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
具体参考:https://blog.csdn.net/officercat/article/details/39519265

2.安装过程遇到的问题

(1) centos 6.3 git 1.7.1版本太低,升级到2.2
(2) 缺少g++,gcc版本过低,升级gcc版本
下载源码包
$ wget http://file.market.xiaomi.com/download/AppStore/0ba8fa4a47f0f4abb3b0a441ea56451cb2b05fcc8/gcc-4.8.2.tar.gz
解压
tar -zxvf gcc-4.8.2.tar.gz
下载依赖库
$ cd gcc-4.8.2
$ ./contrib/download_prerequisites
configure
$ ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
编译
$ make -j4
安装
$ sudo make install
卸载旧版
$ yum erase gcc gcc-c++

2.使用

定义company.proto文件,用protoc编译工具生成相应的代码。

// company.proto文件
syntax = "proto3";
package company;

service Company {
    rpc AddEmployee(Employee) returns (EmployeeID) {}         // 提交员工信息
    rpc ListEmployees(AgeRange) returns (stream Employee) {}  // 查询员工信息
}
message Employee {
    string name = 1;
    int32  age  = 2;
}
message EmployeeID {
    int32 id = 1;
}
message AgeRange {
    int32 low = 1;
    int32 high = 2;
}

$ protoc -I protos --grpc_out=cpp --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` protos/company.proto
$ protoc -I protos --cpp_out=cpp protos/company.proto
-I:指定读取的proto文件目录
--grpc_out:指定生成的grpc文件目录,生成grpc文件需要grpc_cpp_plugin插件
--cpp_out:指定生成的cpp文件目录
读取protos/company.proto文件,分别生成company.grpc.pb.cc、company.grpc.pb.h、company.pb.cc、company.pb.h。

protoc会自动编译生成一些访问的方法,具体参考:https://developers.google.com/protocol-buffers/docs/proto3

参考:
[1] http://senlinzhan.github.io/2017/04/20/grpc/
[2] https://grpc.io/docs/guides/ 介绍what?concepts?authentication?
[3] https://www.jianshu.com/p/efc9167e7044

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章