如何从源码编译Go版Protocol Buffer并修改后重新构建?
重新编译protoc及自定义protoc-gen-go的步骤
一、先明确两个核心组件的区别
protoc:Protocol Buffer的核心编译器,基于C++开发,负责解析.proto文件并调用对应的代码生成插件。protoc-gen-go:Go语言的代码生成插件,属于protobuf-go项目,基于Go开发,用于将.proto文件生成Go代码。
如果你只是修改protobuf-go的源码(即自定义Go代码生成逻辑),不需要重新编译protoc,只需要重新编译protoc-gen-go即可;如果需要修改protoc本身的核心逻辑,才需要编译C++版的protoc。
二、重新编译自定义的protoc-gen-go(修改protobuf-go源码后)
- 拉取protobuf-go源码到本地
git clone https://github.com/protocolbuffers/protobuf-go.git cd protobuf-go - 在本地修改你需要调整的源码(比如
cmd/protoc-gen-go下的插件逻辑、internal中的核心处理代码等) - 编译并安装自定义版本的插件
编译完成后,二进制文件会自动放到你的go install ./cmd/protoc-gen-goGOBIN目录(默认路径为$HOME/go/bin) - 验证安装结果
# 检查插件路径是否为自定义编译的版本 which protoc-gen-go # 查看版本信息,确认是本地编译的版本 protoc-gen-go --version - 使用自定义插件生成Go代码
正常执行protoc命令即可,系统会优先使用PATH中找到的protoc-gen-go(确保GOBIN在你的PATH环境变量中):protoc --go_out=. your_proto_file.proto
三、如果需要重新编译C++版protoc
- 拉取Protocol Buffer主仓库并初始化子模块
git clone https://github.com/protocolbuffers/protobuf.git cd protobuf git submodule update --init --recursive - 安装编译依赖(Mac环境)
# 安装Xcode命令行工具 xcode-select --install # 安装CMake brew install cmake - 编译并安装protoc
mkdir build && cd build cmake .. # 多线程加速编译,nproc为CPU核心数 make -j$(nproc) # 安装到系统路径 make install - 验证编译结果
protoc --version
内容的提问来源于stack exchange,提问作者Salem Alqahtani
相关产品推荐
相关产品推荐

