編譯gRPC Go版本使用的 ProtoBuffer 文件


 

本篇文章主要解決mac下安裝ProtoBuffer,編譯go版本gRPC用的.proto文件

 

安裝 protoc

注意,gRPC 需要用到 proto3, 而目前 Release 的版本是 2.6.1, 所以我們需要去下載源碼並編譯。

https://developers.google.com/protocol-buffers/docs/downloads?hl=zh-cn 

protobuf 的源碼在: https://github.com/google/protobuf

 

Mac的特有前置安裝需求

對Mac 用戶來說, Unix tools 默認是不可用的, 需要首先安裝 Xcode , 然后在 terminal 運行下面命令:

$ sudo xcode-select –install

Mac下面除了用dmg、pkg來安裝軟件外,比較方便的還有用MacPorts\brew , 它們能幫助你安裝其他應用程序,

port 的下載地址: https://www.macports.org/install.php 

port 安裝 autoconf automake libtool  的命令為:

$ sudo /opt/local/bin/port install autoconf automake libtool
brew 的命令為: brew install autoconf automake libtool 
否則我們就需要象下面這樣,一個個的編譯安裝。
http://www.cainiaoer.com/2014/10/560.html
下面是我 brew 安裝的截屏:

KIR%TG6ZAW3TY$%VQ3]Z`JT

 

Unix 下 Protocol Buffers 的編譯

由於我們的代碼是 github 下載的, 所以我們需要先產生 配置腳本

$ ./autogen.sh

 

這個命令將下載gtest 源碼到當前目錄, 並運行 automake, autoconf 等產生配置腳本和各種模板的 makefile。

如果你使用的是 release 包, 可以跳過這一步。  下載這里,如果你無法通過命令行下載,可以手工下載后,copy到對應目錄, 不過要在這個sh文件中注釋掉下載那一行。

 

編譯安裝

依次執行下面命令,完成編譯、安裝。

$ ./configure
$ make
$ make check
$ make install

安裝完成后,需要確認安裝的版本是 3。:

}D9`D{1KPM]QS@W3XEN)Z6A

整個編譯安裝過程請參考:

https://github.com/google/protobuf

https://github.com/google/protobuf/blob/master/INSTALL.txt 

安裝 proto的 Go插件

 

go get -a github.com/golang/protobuf/protoc-gen-go

 

-a 參數標示下載好后直接做 go install

 

編譯 .proto 文件

我們這里准備編譯的 proto 文件如下,這個文件名 lm.helloworld.proto , 比較好的習慣就是這樣命名: packageName.MessageName.proto:

syntax = "proto3";
package lm;
message helloworld
{
    int32  id  = 1; // ID
    string str = 2; // str
    int32  opt = 3;
}

在 protobuf 的術語中,結構化數據被稱為 Message。proto 文件非常類似 java 或者 C 語言的數據定義。

在這個例子中,package 名字叫做 lm,定義了一個消息 helloworld,該消息有三個成員,類型為 int32 的 id 和 opt,另一個為類型為 string 的成員 str。

注意,我們這里標示了 syntax = "proto3";

 

前面的 proto 相關工具准備好后, 我們執行下面命令即可產生這個idl文件對應的 go實現類。

 

假設你是在下面選中的目錄下執行命令,期望生產的go版本的proto文件在 lm 目錄下。 

03I`([`1F0XLS@S~7ZDK3C2

則執行下面命令。

protoc -I ../protos ../protos/lm.helloworld.proto  --go_out=plugins=grpc:lm

 

跟 proto文件產生在同一個目錄,則命令是:

protoc -I ../protos ../protos/lm.helloworld.proto  --go_out=plugins=grpc:.

 

生產的Go代碼文件:

image

proto 3 的語言向導請參看: https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM