关于协议缓冲区:protoc-gen-go:找不到程序或不可执行

protoc-gen-go: program not found or is not executable

我正在尝试使用go grpc构建示例应用程序,但无法使用" protoc"生成代码

已使用以下方法安装了所需的库/运行包:

  • 前往-u google.golang.org/grpc
  • 去获取-u github.com/golang/protobuf/protoc-gen-go
  • 尝试设置路径,但没有运气。

    样本"原型"文件:

    1
    2
    3
    4
    5
    6
    syntax ="proto3";

    package greet;
    option go_package="greetpb";

    service GreetService{}

    错误信息:
    " protoc-gen-go:找不到程序或不可执行
    --go_out:protoc-gen-go:插件失败,状态码为1。


    有两种安装protobuf编译器的方法,如果您使用的是Ubuntu,则可以使用此方法,

    1
    sudo apt install protobuf-compiler

    那当然是标准方法

    1
    go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

    在这里,它只是添加路径。假设您安装Go时是这样做的,

    1
    2
    echo 'export GOPATH=$HOME/Go' >> $HOME/.bashrc
    source $HOME/.bashrc

    现在您可以扩展它,

    1
    2
    echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
    source $HOME/.bashrc

    奇怪的是,protoc无法扩展~


    通过以下步骤解决:

    使用以下命令安装go库:
    去获取-u github.com/golang/protobuf/{proto,protoc-gen-go}

  • 运行vim ~/.bash_profile
  • 加:
  • 1
    2
    export GO_PATH=~/go
    export PATH=$PATH:/$GO_PATH/bin
  • 运行source ~/.bash_profile
  • 参考:无法构建protobuf进入端点


    从github仓库开始,这个解决方案对我有用。

    Go版本为go version go1.14.1 linux/amd64

    将此添加到.bashrc并获取它。

    1
    2
    3
    4
    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export GOBIN=$GOPATH/bin
    export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN

    https://github.com/golang/protobuf/issues/795


    他们在上面评论说,必须添加以下软件包

    1
    sudo apt install protobuf-compiler

    就我而言,我还必须添加此..

    1
    sudo apt install golang-goprotobuf-devc

    确保在PATH变量中设置了GOBIN。否则,您可能会遇到此问题。通过运行go env检查GOBIN路径,并确认GOBIN不为空。

    如果为空,请尝试如下

    1
    2
    3
    export GOPATH=$HOME/go
    PATH=$PATH:$GOPATH/bin
    protoc --go_out=plugins=grpc:. *.proto