User Tools

Site Tools

blog:2020-04-07_grpc_c_編譯環境建置



2020-04-07 gRPC C++ 編譯環境建置

  • gRPC 是Google發起的一個開源遠程過程調用 系統。該系統基於 HTTP/2 協議傳輸,使用Protocol Buffers 作為接口描述語言。
  • 要使用gRPC,需先能編譯 Protocol Buffers .proto 檔案。Protocol Buffers是一種序列化資料結構的協定。
  • 在 Ubuntu 16.04 下,測試整個流程紀錄如下

gRPC 環境

1, Pre-requisites

  • $sudo apt-get install build-essential autoconf libtool curl git pkg-config
    $git clone https://github.com/grpc/grpc.git
    $cd grpc
    $git submodule update --init
  • Note:
    • build-essential: build-essential軟件包, 作用是提供編譯程序必須軟件包的列表信息, 這個包提供了很多編譯相關的軟體包,裡面有:dpkg-dev fakeroot g++ g++-4.6 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl libstdc++6-4.6-dev libtimedate-perl
    • autoconf: 一個在Bourne shell下製作供編譯、安裝和打包軟體的組態指令碼的工具
    • libtool: 一種屬於GNU建構系統的GNU程式設計工具,用來產生可攜式的函式庫
    • pkg-config: 一個在原始碼編譯時查詢已安裝的庫的使用介面的電腦工具軟體
    • curl: cURL是一個開源專案,主要的產品是curl和libcurl,兩者功能均是:基於網路協定,對指定URL進行網路傳輸。 cURL涉及是任何網路協定傳輸,不涉及對具體資料的具體處理。
    • git: git是一個分散式版本控制軟體

2, 編譯並安裝 Protocol Buffers

  • $cd third_party/protobuf/
    $./autogen.sh
    $./configure --prefix=/data/bin/protobuf/protobuf-dev
    $make -j4
    $sudo make install

3, 更改環境變量

  • gRPC的編譯和安裝,因為Protocol Buffers安裝到了自定義目錄,所以需要更改幾個環境變量,使gRPC能順利地找到Protocol Buffers
    $cd ../../
    $export PKG_CONFIG_PATH=/data/bin/protobuf/protobuf-dev/lib/pkgconfig:/data/bin/grpc/grpc-dev/lib/pkgconfig
    $export PATH=/data/bin/protobuf/protobuf-dev/bin:/data/bin/grpc/grpc-dev/bin:$PATH
    $export LD_LIBRARY_PATH=/data/bin/protobuf/protobuf-dev/lib:/data/bin/grpc/grpc-dev/lib
    $EXTRA_LDFLAGS=-L/data/bin/protobuf/protobuf-dev/lib CONFIG=dbg make prefix=/data/bin/grpc/grpc-dev -j4
    $sudo CONFIG=dbg make prefix=/data/bin/grpc/grpc-dev install
    

4, 去除 Debug 訊息 (Optional)

  • 利用上面方法安裝的gRPC程序即使在編譯連接後依然輸出DEBUG信息,當不需要此信息時,將最後兩行修改如下
  • $EXTRA_LDFLAGS=-L/data/bin/protobuf/protobuf-dev/lib make -j4
    $make prefix=/data/bin/grpc/grpc-dev install

5, 永久修改環境變量

  • 修改環境變量
    $git ~/.bashc
  • 加上
    export PATH=/data/bin/protobuf/protobuf-dev/bin:/data/bin/grpc/grpc-dev/bin:$PATH
    export PKG_CONFIG_PATH=/data/bin/protobuf/protobuf-dev/lib/pkgconfig:/data/bin/grpc/grpc-dev/lib/pkgconfig
    export LD_LIBRARY_PATH=/data/bin/protobuf/protobuf-dev/lib:/data/bin/grpc/grpc-dev/lib
  • 套用
    $source ./~bashrc

測試編譯 .proto 檔案

  • $protoc -I . --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` helloworld.proto 
    $protoc -I . --cpp_out=. helloworld.proto

References

TAGS

  • 604 person(s) visited this page until now.

Permalink blog/2020-04-07_grpc_c_編譯環境建置.txt · Last modified: 2020/04/07 17:40 by jethro

oeffentlich