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

  • 相关阅读:
    关于跳槽你需要知道的
    Ping 命令的使用方法总结
    Linux 使用 su 切换用户提示 Authentication Failure 的解决方法
    《小强升职记——时间管理故事书》读书笔记
    记近期的几次面试经历
    每月书单_2014-06
    每月书单_2014-02
    交互式设计与用户体验
    读书笔记_探索式测试_混合探索式测试
    请慢慢移动……由于操作快慢导致的bug
  • 原文地址:https://www.cnblogs.com/wongdu2014/p/9175194.html
Copyright © 2011-2022 走看看