天天看點

C++ gRPC 環境搭建

(os: ubuntu 16.04)

1. 下載下傳gRPC源碼

1.1 git拉取

   在網絡可以連接配接到github的情況下, 隻需要簡單的一條指令就可以拉取到所有需要的源碼   

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

   但是, 網絡無法很順暢的連接配接到github,  将拉取位址中的github.com替換成鏡像站的網址                   github.com.cnpmjs.org,如果此鏡像站出現問題請重新搜尋可用的鏡像站位址。 

1.2 submodule拉取

   注意下面的git指令, 使用了--recurse-submodules, 會同時拉取該git項目依賴的submodule,   

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

   如果網絡不佳,我們可手動替換了上面指令中的拉取位址, 如下所示   

   git clone --recurse-submodules -b v1.37.1 https://github.com.cnpmjs.org/grpc/grpc

   但是此時submodule中的位址仍然是github.com, 沒有經過替換, 是以此時拉取仍然會失敗, 經過

   網上檢索到的資訊, 提供一個解決方案, 先不拉取submodule, 使用如下的git指令

   git clone -b v1.37.1 https://github.com.cnpmjs.org/grpc/grpc

   成功拉取到代碼後, 進入代碼目錄, 打開.gitmodules修改submodule位址, 替換所有github.com為     鏡像位址(github.com.cnpmjs.org). 然後執行git submodule sync, 重新同步submodule的url.

   上述操作成功之後執行以下指令

   git submodule update --init

   拉取submodule, 一切順利的話gRPC相關的源碼即全部拉取成功.    

2. 編譯gRPC代碼

2.1 基礎工具

2.1.1 cmake

       截至(2021.5.19)官方文檔要求需要cmake版本高于3.13. 可通過一下指令檢視自己目前cmake的版本

       cmake --version

       如果不符合要求, 需要進行更新替換符合要求的版本, 此處不詳細叙述如何更新cmake,提供一個供

       參考的網址(https://askubuntu.com/questions/829310/how-to-upgrade-cmake-in-ubuntu).

       下載下傳cmake高版本:https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz 後編譯預設安裝即可。    

2.1.2 其他相關工具

      執行以下指令就可以完成其他所需工具的安裝

      sudo apt install -y build-essential autoconf libtool pkg-config

      必須確定這些工具安裝成功,尤其是pkg-config ,否則後續編譯案例 helloword 會出錯。

2.2 開始編譯

2.2.1 編譯gRPC

     為了友善後續操作, 先切換到超級使用者然後進行操作, 執行以下指令切換到超級使用者

     sudo su

     之後輸入密碼, 當@前面的符号顯示為root之後說明成功切換到超級使用者.

     進入grpc代碼目錄

     1、在目前目錄執行make, 編譯gRPC,再執行make install 進行預設安裝

     2、再進入third_party/protobuf 下執行./configure 生成makefile 後繼續執行make 再次make install 預設安裝即可。(這一步至關重要,将protobuf可執行程式,靜動态庫以及頭檔案安裝到預設目錄,保證編譯example順利進行)

2.2 測試程式檢查

    進入grpc代碼目錄, 進入helloworld測試程式目錄, 

    cd examples/cpp/helloworld

    進入到該目錄下, 執行下面指令使用cmake 生成makefile

    成功之後進行 make 編譯, 目前目錄會生成相應的服務端和用戶端可執行程式

    首先啟動 greeter_server 程序, 然後另開一個終端啟動 greeter_client,

    當螢幕上出現 "Greeter received: Hello world" 說明成功

2.3 利用protobuf生成c++代碼

protoc [proto file path] --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` --grpc_out=[output fold path]

protoc [proto file path] --cpp_out= [output fold path]

繼續閱讀