Windows 上配置 Go 的 gRPC 編譯環境


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:”后的值的影響。


免責聲明!

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



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