学习记录
gRPC 环境搭建详解:Windows、macOS、Linux 全流程
从 Go、protoc、Go 插件到 PATH 和版本校验,系统梳理 gRPC 在 Windows、macOS、Linux 上的完整环境搭建流程。
很多人第一次接触 gRPC,真正卡住的地方往往不是服务定义,而是环境:
protoc没装- Go 插件没装
- PATH 没配
- 能生成 protobuf,不能生成 gRPC 代码
- Windows、macOS、Linux 的安装命令又不一样
这篇文章不讲 gRPC 原理,只聚焦一件事:把开发环境一次搭到可用。
背景
在 Go 里做 gRPC 开发,最基础的链路通常是:
- 安装 Go
- 安装
protoc - 安装 Go 的 protobuf 插件
- 安装 Go 的 gRPC 插件
- 用
.proto文件生成 Go 代码
如果这条链路里任何一个环节没配好,后面的命令都会报错。
你最终要具备的东西
从结果看,环境搭好以后,至少要满足这几件事:
go version能正常输出protoc --version能正常输出protoc-gen-go能被系统找到protoc-gen-go-grpc能被系统找到
如果这四项都通了,gRPC 的基础开发环境基本就齐了。
第一步:安装 Go
Windows
最直接的方式是:
- 打开 Go 官方下载页
- 下载 Windows 安装包
- 执行安装
安装完成后,在 PowerShell 里验证:
1go version
macOS
可以直接安装官方 .pkg,也可以用包管理器。
如果你用 Homebrew:
1brew install go
安装后验证:
1go version
Linux
Linux 常见有两种做法:
- 用发行版包管理器
- 直接下载官方 tarball
例如 Ubuntu:
1sudo apt update
2sudo apt install golang-go
安装后验证:
1go version
第二步:安装 protoc
gRPC 的代码生成依赖 Protocol Buffers 编译器,也就是 protoc。
Windows
常见做法:
- 下载
protoc的 Windows 压缩包 - 解压后把
bin目录加入系统 PATH
验证命令:
1protoc --version
macOS
如果你用 Homebrew:
1brew install protobuf
验证:
1protoc --version
Linux
Ubuntu 常见命令:
1sudo apt update
2sudo apt install protobuf-compiler
验证:
1protoc --version
第三步:安装 Go 代码生成插件
Go 里最少要装两个插件:
protoc-gen-goprotoc-gen-go-grpc
安装命令:
1go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
2go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
这两条命令会把可执行文件装到 Go 的 bin 目录里。
第四步:确认 Go bin 在 PATH 里
这是最容易漏掉的一步。
如果你已经执行了 go install,但 protoc 还是提示找不到插件,通常就是 PATH 没配好。
先确认 Go bin 在哪
1go env GOPATH
通常插件会在:
1$GOPATH/bin
如果你没有显式设置 GOPATH,Go 默认会用:
- Windows:
%USERPROFILE%\\go\\bin - macOS/Linux:
$HOME/go/bin
Windows
PowerShell 当前会话临时加 PATH:
1$env:Path += \";$env:USERPROFILE\\go\\bin\"
如果要长期生效,就把它加到系统或用户环境变量里。
macOS / Linux
把下面这行加进你的 shell 配置文件,例如 .zshrc、.bashrc:
1export PATH=\"$PATH:$HOME/go/bin\"
然后重新加载:
1source ~/.zshrc
或者:
1source ~/.bashrc
第五步:验证插件是否能被找到
你不一定要直接执行插件,但至少可以这样确认:
Windows
1Get-Command protoc-gen-go
2Get-Command protoc-gen-go-grpc
macOS / Linux
1which protoc-gen-go
2which protoc-gen-go-grpc
如果查不到,问题基本就是 PATH。
第六步:准备一个最小 proto 文件
例如新建 proto/hello.proto:
1syntax = "proto3";
2
3package hello;
4
5option go_package = "example.com/grpcdemo/proto;proto";
6
7service Greeter {
8 rpc SayHello (HelloRequest) returns (HelloReply);
9}
10
11message HelloRequest {
12 string name = 1;
13}
14
15message HelloReply {
16 string message = 1;
17}
这里最容易漏的是 option go_package。如果不写,Go 代码生成时经常会出现包路径问题。
第七步:生成 Go 代码
在项目根目录执行:
1protoc \
2 --go_out=. \
3 --go-grpc_out=. \
4 proto/hello.proto
如果你在 Windows PowerShell 里,更直接的单行写法可以是:
1protoc --go_out=. --go-grpc_out=. proto/hello.proto
生成成功后,通常会看到:
hello.pb.gohello_grpc.pb.go
最常见的报错与排查
1. protoc: command not found
说明 protoc 本身没装好,或者不在 PATH。
2. protoc-gen-go: program not found or is not executable
说明插件没装,或者 Go bin 没进 PATH。
3. 只生成了 .pb.go,没有生成 _grpc.pb.go
通常是:
protoc-gen-go-grpc没装- 命令里没写
--go-grpc_out
4. go_package 相关错误
通常是 .proto 里的 option go_package 写得不合适,或者生成目录和模块路径没对齐。
一个更稳的建议
如果你后面准备长期写 gRPC 项目,不要只停留在“系统里能跑通命令”。
更稳的做法是把生成命令固化到:
MakefileTaskfile- PowerShell 脚本
- npm script / justfile
这样团队协作时不会每个人都手敲一遍命令。
我的总结
- Go 做 gRPC 的核心环境就是
go + protoc + 两个 Go 插件 - 真正最容易出问题的通常不是安装本身,而是 PATH
option go_package很重要,别省- Windows、macOS、Linux 的差异主要集中在安装命令和 PATH 配置
- 环境一旦跑通,最好把生成命令固化成脚本,不要长期手敲