獲取原始碼: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.h
line 90新增
/// default assignment operator
writeoptions& operator=(const writeoptions& other) = default;
報錯:error: ambiguating new declaration of 『long int gettid()』
解決方案:將src/core/lib/gpr/log_linux.cc
、src/core/lib/gpr/log_posix.cc
、src/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平台的封裝,獲取感測器資料...