1、Windows 上查看環境變量方法
以查看 GOPATH 為例。
- 普通命令行查看 GOPATH:
echo %GOPATH% |
---|
- PowerShell 上查看 GOPATH:
echo $env:GOROOT |
---|
2、安裝 protoc
上 https://github.com/google/protobuf/releases 下載 protoc。以 protoc-3.13.0-win64.zip 為例,解壓后將 bin 所在的完整目錄(如“C:\Program Files\protoc-3.13.0-win64\bin”)加入到系統環境變量 PATH 中,目的是能找到 bin 目錄中的 protoc 。
注意 protoc 並不包含 Go 版本的 proto 文件編譯器插件,需要另外安裝。此外,Go 版本的 gRPC 依賴的 protoc 的版本不能低於 3.0。
3、安裝 gRPC
進入 GOROOT 或 GOPATH 的 src\google.golang.org 目錄(以 GOROOT 為例,比如“C:\Go\src”),執行:
git clone https://github.com/grpc/grpc-go |
---|
成功后將 grpc-go 文件夾重命名為 grpc,完整路徑如下:
C:\$GOROOT\src\google.golang.org\grpc |
---|
如果是 GOPATH 下的,則為:
C:\$GOPATH\src\google.golang.org\grpc |
---|
4、安裝 genproto
同樣在 src\google.golang.org 目錄下,執行:
git clone https://github.com/google/go-genproto |
---|
成功后將 go-genproto 重命名為 genproto,完整路徑如下:
C:\$GOROOT\src\google.golang.org\genproto |
---|
如果是 GOPATH 下的,則為:
C:\$GOPATH\src\google.golang.org\genproto |
---|
5、設置 Go 代理環境
go env -w GOPROXY=https://goproxy.cn,direct |
---|
如果不設置,則會因為網絡不通在執行“go get”時失敗,錯誤信息:
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. |
---|
6、安裝 proto
go get -u github.com/golang/protobuf/proto |
---|
7、安裝編譯插件 protoc-gen-go
protoc-gen-go 是 Go 版本的 proto 文件編譯器插件,安裝方法:
go get -u github.com/golang/protobuf/protoc-gen-go |
---|
成功后,可在目錄 $GOPATH/bin 下看到 protoc-gen-go.exe。
需將 $GOPATH/bin 加入到系統環境變量 PATH 中,否則執行 protoc 編譯時將報如下這樣的錯誤:
'protoc-gen-go' 不是內部或外部命令,也不是可運行的程序或批處理文件。 --go_out: protoc-gen-go: Plugin failed with status code 1. |
---|
8、下載依賴包
創建目錄 C:$GOROOT\src\golang.org\x,然后進入 x 目錄,執行以下兩步操作:
git clone https://github.com/golang/net.git git clone https://github.com/golang/text.git |
---|
9、測試驗證
切換到目錄(依賴 gRPC 安裝在目錄 GOROOT 還是目錄 GOPATH):
C:\$GOROOT\src\google.golang.org\grpc\examples\helloworld |
---|
或(如果 gRPC 安裝在目錄 GOPATH)
C:\$GOPATH\src\google.golang.org\grpc\examples\helloworld |
---|
編譯子目錄 helloworld 下的 helloworld.proto 生成 Go 代碼文件 helloworld.pb.go:
protoc -I .\helloworld helloworld.proto --go_out=plugins=grpc:"c:\go\src" |
---|
上面的“-I”用於指定 proto 文件所在目錄。如果沒有報錯,則可在子目錄 helloworld 下找到編譯生成的文件 helloworld.pb.go,編譯環境即已搭建好。
注意“plugins=grpc:”后的值受“.proto”文件中的 go_package 值影響,兩者共同組成生成的“.pb.go”文件所在目錄。如果“.proto”文件中沒有指定 go_package,則只受“plugins=grpc:”后的值的影響。