go - 如何使用 gccgo 构建 hyperledger fabric

标签 go hyperledger-fabric gccgo

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

  1. 找到构建命令

make -n release

echo "Building release/linux-amd64/bin/configtxgen for linux-amd64"

mkdir -p release/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: error: import file ‘plugin’ not found
"plugin"

bccsp/factory/pluginfactory.go:56:15: error: reference to undefined name

‘plugin’ plug, err := plugin.Open(config.PluginOpts.Library)

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

谁能帮帮我?谢谢。

最佳答案

您需要使用正确版本的 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。

关于go - 如何使用 gccgo 构建 hyperledger fabric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52125955/

相关文章:

go - 如何防止其他人更改返回结构的内容

windows - 使用 Windows 10 编写第一个应用程序时出现 hyperledger Fabric 错误

go - 为什么用 gccgo 构建的二进制文件更小(除了其他差异?)

go - 如何为ARM体系结构构建SO库

go - 字符串到 char (*array)[]

google-app-engine - 意外的属性 static_dir :

go - 在模板中,我怎样才能有一个计数器?

go - 如何访问云构建器中的私有(private) Github 存储库?

docker - 使用Mac的Docker安装Hyperledger依赖于结构的二进制文件

hyperledger-fabric - 为什么 "hyperledger-fabric"私有(private)数据集合无法查询 PDC 并在同一事务上对其进行更改?