protoc 命令的獲得
源碼在 https://github.com/google/protobuf , 如果不想自己編譯獲得最新版本,則可以下載官方編譯好的各個平臺的,下載地址:https://github.com/google/protobuf/releases ,注意不是帶語言后綴的文件,那是源碼,如下圖:
下載后的解壓縮包含的內容如下(以mac下為例)

我們通過 which 命令可以查到 protoc 的安裝目錄, 覆蓋它即可。
$ which protoc
/usr/local/bin/protoc
例子
Java 文件生成
$ protoc --java_out=./java/ ./proto/helloworld.proto
protoc 的命令格式為 protoc [OPTION] PROTO_FILES (最后是待編譯的 proto文件)
--java_out 為輸出java代碼的目錄,這里指定的是 ./java/ 目錄。
隨后我們指定了proto文件的位置 ./proto/helloworld.proto 。
執(zhí)行上述命令,我們就 ./java/ 目錄下就產生了對應的 java文件。
go 文件生成
下面這幾種方式生成都可以:
$ protoc --go_out=./go/ ./proto/helloworld.proto
跟上面Java的生成完全一樣,只不過這次是讓生成 go 的代碼。
$ protoc --go_out=./go/ -I proto ./proto/helloworld.proto
簡單來說,就是如果多個proto文件之間有互相依賴,生成某個proto文件時,需要import其他幾個proto文件,這時候就要用-I來指定搜索目錄。
如果沒有指定 –I 參數(shù),則在當前目錄進行搜索。
上面兩種方法產生的目錄如下圖, –I 參數(shù)起作用了后,生成目錄少了一級:
javanano 文件生成
$ protoc --javanano_out=ignore_services=true:./javanano/ -I proto ./proto/garlic.proto
由于 javanano 是給 android 用的,沒有服務器端代碼,所以多了--javanano_out=ignore_services=true:DST_DIR 這個設置,其他完全一樣。
參考: https://github.com/grpc/grpc-common/issues/156
Language
Platform
Command
Node.js
Linux, Mac, Windows
npm install grpc
Python
Linux, Mac, Windows
pip install grpcio
Ruby
Linux, Mac, Windows
gem install grpc
PHP
Linux, Mac, Windows
pecl install grpc-beta
Go
Linux, Mac, Windows
go get google.golang.org/grpc
Objective-C
Mac
Runtime source fetched automatically from Github by Cocoapods
C#
Windows
Install gRPC NuGet package from your IDE (Visual Studio, Monodevelop, Xamarin Studio)
Java
Linux, Mac, Windows
Use our Maven and Gradle plugins that provide gRPC with statically linked boringssl
C++
Linux, Mac, Windows
Currently requires manual build and install
參考資料:
https://github.com/google/protobuf/tree/master/javanano
https://github.com/google/protobuf

