zoukankan      html  css  js  c++  java
  • protoc: Command not found

           编译程序报错"protoc: Command not found;*** [xxx.pb.go] Error 127",然后关键字"pb.go"搜到文章<如何在Go中使用Protobuf>,指出需要"1. 安装protoc"和"2. 下载并安装protobuf-go插件"。然后关键字"安装protoc"搜到文章<在 Golang 中使用 Protobuf>,然后依据此标题关键字"go protobuf 安装"搜索到文章<在go语言中安装与使用protobuf的方法详解>,该文章安装protoc十分简洁,但是是2.6版本,安装后编译程序报错`Unrecognized syntax identifier "proto3".  This parser only recognizes "proto2".`,只好执行"make uninstall"然后参照关键字"安装protoc"搜到文章<protobuf 3.1.0 安装示例和使用指南说明>,但是到git网址上下了最新的安装,然后编译程序报错"protoc-gen-go: program not found or is not executable;--go_out: protoc-gen-go: Plugin failed with status code 1.",这个就是前面文章中说到的要安装protoc-gen-go。

           按照文章<在 Golang 中使用 Protobuf>来安装protoc-gen-go,文中说编译后需要执行"go install"来安装,但是安装的位置是在当前目录所在的bin目录下,而该bin目录并没有包含在环境变量中,所以不能用,后面直接拷贝到跟go可执行程序同一个目录下就可以了。文章<在go语言中安装与使用protobuf的方法详解>也指出需要"protoc-gen-go编译它之后将可执行文件执行路径写入环境变量"。

           注意grpc程序,如果在.proto文件中定义的message A中嵌套定义了message B,则在初始化A时,B需要以指针形式来赋值,这个可以参考grpc的examples目录下的route_guide例子,在route_guide.proto文件中定义了几个message,其中Rectangle、RouteNote包含了message Point,所以在client文件中定义这两个变量时,对其Point类型的成员都是用指针来赋值。关于.proto文件中的message,参看了博客园中的文章<Golang gRPC 示例>,"repeated则表示数组"。

  • 相关阅读:
    Elasticsearch搜索引擎学习笔记(二)
    Elasticsearch搜索引擎学习笔记(一)
    Redis集群(cluster模式)搭建(三主三从)
    Redis主从、哨兵
    oracle 数据查询 返回树形结构的每一级的id
    oracle 数据库查询 COALESCE字符函数
    java 生成不重复的6位数字 +年月日
    oracle 数据库查询CLOB类型 报错 【ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB】
    oracle 数据表结构和数据 导入 导出
    sql 创建数据库表结构
  • 原文地址:https://www.cnblogs.com/wongdu2014/p/9175194.html
Copyright © 2011-2022 走看看