有没有办法使用gccgo构建超级面料?我想这样做是为了使用gcc的-finstrument-functions选项跟踪函数调用 . 但我遇到了两个问题 . 我的步骤如下 .
- 找到构建命令
make -n release echo“构建版本/ 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
- 修改build命令以使用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 /工厂bccsp / factory / pluginfactory.go:12:8:错误:导入文件'插件'未找到“插件”bccsp / factory / pluginfactory.go:56:15:错误:引用未定义名称'插件'插件,错误: = plugin.Open(config.PluginOpts.Library)
首先,如上所述,当go build调用gccgo时,找不到“plugin” . 另一个是如何在使用gccgo时传递ldflags -X?似乎-X是一个仅在gc工具中无效的参数而不是gccgo .
有人可以帮帮我吗?谢谢 .
1 回答
您需要使用正确版本的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 .