0

我正在编译一个用 go (openblockchain) 编写的开源项目。当我这样做时,我收到以下错误go build。谁能帮我解决这个问题

编译错误

> go build
../go/src/github.com/openblockchain/obc-peer/openchain/util/utils.go:28:2: cannot find package "google/protobuf" in any of:
    /usr/src/pkg/google/protobuf (from $GOROOT)
    /home/vichu/go/src/google/protobuf (from $GOPATH)

附加信息

我在 Stack Overflow 中提到了这个问题但仍然没有解决这个问题的运气。以下是有关我所拥有的更多信息:

协议版本是最新的。

> protoc --version 
libprotoc 3.0.0

我的环境变量

> echo $GOPATH
/home/vichu/go
> echo $GOBIN
/home/vichu/go/bin

Protobuf 是使用 README 构建的。

~/go/src/github.com/golang/protobuf$ ls
AUTHORS  CONTRIBUTORS  jsonpb  LICENSE  Makefile  Make.protobuf  proto  protoc-gen-go  proto.pb.go  ptypes  README.md

更新

Util.go如答案中所述,我在源代码中执行了以下操作。源代码是开源的,这里是链接

-       gp "google/protobuf"
+       gp "github.com/google/protobuf"

当我这样做go get时,以下是错误

> go get github.com/google/protobuf
can't load package: package github.com/google/protobuf: no buildable Go source files in /home/vichu/go/src/github.com/google/protobuf
4

2 回答 2

4

首先,您的导入错误,您正在尝试导入 C++ 包,而不是 golang 包。它需要是:

import ("github.com/golang/protobuf/proto")

如果您尚未安装此软件包,则需要从命令行运行:

go get github.com/golang/protobuf/proto
于 2016-04-11T15:44:32.687 回答
0

我认为,在您的 *.pb.go 文件的末尾,您也没有“gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00 ....”之类的东西。

问题是我们使用了错误的编译器来生成。

所以:

1)我从以下位置重新安装 protobuf: https ://github.com/google/protobuf/releases

2)然后(我使用的是 ubuntu,它也有一个 proto 编译器):apt remove protobuf-compiler

重建 *.proto 文件。它修复了这个错误。

于 2018-07-16T03:53:32.047 回答