3

我是 go-lang 的新手。我想使用 go 命令构建一个名为cryptogen(hyperledger/fabric 工具)的二进制文件。我从 github 下载源代码并根据自述文件键入以下命令:

CGO_CFLAGS=" " GOBIN=/hyperledger/src/github.com/hyperledger/fabric/build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=1.0.7" github.com/hyperledger/fabric/common/tools/cryptogen

在我的 Mac OS(OS 版本是 10.13,go-lang 版本是 1.10)上,我收到以下错误:

go build github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11: invalid flag in #cgo LDFLAGS: -I/usr/local/share/libtool

我以为我错过了libtool,安装后,我仍然遇到同样的错误。

接下来我能做什么?

4

3 回答 3

2

仅供参考,PKCS11 并不真正需要使用 cryptogen。你实际上可以使用-tags "nopkcs11"

于 2018-03-03T12:36:55.017 回答
1

这显然是 Go 1.9.4 和 1.10 中最近出现的一个问题(Github PR),用于修复安全性(相关的 Go 提交

修复是在 22 天前完成的,但您使用的库github.com/hyperledger/fabric使用的是 pkcs11 库的供应商版本。

我个人会看看安装 github.com/miekg/pkcs11 HEAD 并删除供应商目录是否可以解决问题。如果可行,请为结构作者创建一个问题以更新供应商版本或完全删除它。有可能(取决于销售版本的年龄)已经进行了重大更改。

通读最初的问题。看来您可以使用

CGO_LDFLAGS_ALLOW='-Wl,--no-as-needed' go install

也是。

于 2018-03-02T04:50:49.547 回答
1

此行为已在 GO 版本 1.10 中修复(候选版本仍然存在此问题)。昨天,我在迁移到 GO v1.10 (Ubuntu) 后编译了所有内容。

另请参阅:https ://go-review.googlesource.com/c/go/+/93836/7/src/cmd/go/internal/work/security.go

于 2018-03-03T12:15:05.537 回答