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

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