-1

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

  1. 找到构建命令

make -n 释放

echo "为 linux-amd64 构建版本/linux-amd64/bin/configtxgen"

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:错误:找不到导入文件“插件”
“插件”

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

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

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

任何人都可以帮助我吗?谢谢。

4

1 回答 1

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。

于 2018-09-03T20:39:09.457 回答