如何使用gccgo构建超级账本结构

时间:2018-09-01 07:32:12

标签: go hyperledger-fabric gccgo

是否有一种使用gccgo构建超级账本结构的方法?我想这样做是为了使用gcc的-finstrument-functions选项来跟踪函数调用。但是我遇到了两个问题。我的步骤如下。

  1. 找到构建命令
  

make -n发布

     

echo“构建发行版/ linux-amd64 / bin / configtxgen   linux-amd64“

     

mkdir -p版本/ linux-amd64 / bin CGO_CFLAGS =“”

     

GOOS = linux GOARCH = amd64 go build -o   /home/yiifburj/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen   -tags“ nopkcs11” -ldflags“ -X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.Version=1.1.0”   github.com/hyperledger/fabric/common/tools/configtxgen

  1. 修改构建命令以使用gccgo
  

CGO_CFLAGS =“” GOOS = linux GOARCH = amd64 go build -compiler gccgo -o /home/yiifburj/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen   -tags“ nopkcs11” -gccgoflags“ -X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.Version=1.1.0”   github.com/hyperledger/fabric/common/tools/configtxgen

     

#github.com / hyperledger / fabric / bccsp / factory

     

bccsp / factory / pluginfactory.go:12:8:错误:导入文件“ plugin”不是   找到
   “插件”

     

bccsp / factory / pluginfactory.go:56:15:错误:对未定义名称的引用

     

“插件”插件,错误:=   plugin.Open(config.PluginOpts.Library)

首先,如上所述,当go build调用gccgo时找不到“插件”。 另一个是使用gccgo时如何传递ldflags -X?看来-X是仅在gc工具中无效而不是gccgo的参数。

有人可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您需要使用正确版本的GCC,以获得对各种Fabric版本支持的Go版本的支持。

  • Fabric 1.1需要Go 1.9.x
  • Fabric 1.2.x需要Go 1.10.x
  • 即将推出的Fabric 1.3还需要Go 1.10

gccgo不支持Go 1.9(GCC 7支持Go 1.8)。 GCC 8增加了对Go 1.10的支持。

因此,您应该使用Fabric v1.2和GCC 8。