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。git

       按照文章<在 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則表示數組"。ide

相關文章
相關標籤/搜索