protobuf grpc原始碼編譯安裝過程

2021-10-03 01:32:35 字數 1618 閱讀 1642

獲取原始碼:protobuf-cpp-3.11.4.tar.gz

如果想要用git clone獲取原始碼,還需要多一步獲取子模組,請參考官方使用文件 readme.md

接下來,編譯並安裝protobuf:

為了有序,我把安裝目錄設定為/usr/local/protobuf

./configure --prefix=/usr/local/protobuf

make

make check

sudo make install

sudo ldconfig # refresh shared library cache.

這裡就安裝完成了,然後使用

protoc --version

查詢版本號,如果有就說明安裝成功。

如果不成功,請配置一下環境變數/etc/profile,參考jackytse_:linux下安裝google protobuf(詳細)

github:grpc

make

make check

sudo make install

grpc中提供了一些例子供快速上手:

cd ./examples/cpp/helloworld

make

./greeter_server

切換到另乙個終端:

./greeter_client
順利的話會看到hello world

參考:examples

本人使用gcc9和grpc1.22.0,所以出現了一些問題,經過搜尋後,發現在上游社群裡有些pr更新正好解決了這些問題,記錄如下:

報錯:implicitly-declared operator= is deprecated

解決方案:在include/grpcpp/impl/codegen/call_op_set.hline 90新增

/// default assignment operator

writeoptions& operator=(const writeoptions& other) = default;

報錯:error: ambiguating new declaration of 『long int gettid()』

解決方案:將src/core/lib/gpr/log_linux.ccsrc/core/lib/gpr/log_posix.ccsrc/core/lib/iomgr/ev_epollex_linux.cc這幾個檔案中的

gettid()改為sys_gettid()自己造的乙個大坑。。在安裝完protobuf之後,想當然地以為它安裝在了/usr/local目錄下,實際上看編譯配置檔案會發現它預設安裝在/usr下,導致我配環境變數的時候pkgconfig路徑配錯了。。。

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

搭建protobuf gRpc環境並驗證

protobuf 類似於json,xml等,常用於通訊協議 資料儲存。rpc 遠端過程呼叫,是乙個概念 乙個思想。可基於socket 系統自帶的管道技術 http等多種方式進行實現。grpc rpc的一種實現。通過netty channel作為資料通訊。序列化 反序列化基於protobuf。前提,需...

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...