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则表示数组"。

  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/wongdu2014/p/9175194.html
Copyright © 2011-2022 走看看