无效的标志#cgo LDFLAGS 用 go lang 中断构建
invalid flag #cgo LDFLAGS break build with go lang
我是 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
,安装后,我仍然遇到同样的错误。
接下来我能做什么?
这显然是最近出现的问题 (Github PR) made in Go 1.9.4 and 1.10 to fix a security (associated Go commit)
修复是在 22 天前完成的,但是您正在使用的库 github.com/hyperledger/fabric 使用的是 pkcs11 库的销售版本。
我个人会看看安装 github.com/miekg/pkcs11 HEAD 并删除 vendor 目录是否可以解决问题。如果它有效,请为结构作者创建一个问题来更新 vendoered 版本或将其完全删除。有可能(取决于销售版本的年龄)已经进行了重大更改。
同时通读 initial issue。看来你可以使用
CGO_LDFLAGS_ALLOW='-Wl,--no-as-needed' go install
还有。
此行为已在 GO 1.10 版中修复(候选发布版仍然存在此问题)。昨天,我在迁移到 GO v1.10 (Ubuntu) 后编译了所有内容。
另见:https://go-review.googlesource.com/c/go/+/93836/7/src/cmd/go/internal/work/security.go
仅供参考,PKCS11 并不是使用 cryptogen 所必需的。
你实际上可以使用 -tags "nopkcs11"
我是 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
,安装后,我仍然遇到同样的错误。
接下来我能做什么?
这显然是最近出现的问题 (Github PR) made in Go 1.9.4 and 1.10 to fix a security (associated Go commit)
修复是在 22 天前完成的,但是您正在使用的库 github.com/hyperledger/fabric 使用的是 pkcs11 库的销售版本。
我个人会看看安装 github.com/miekg/pkcs11 HEAD 并删除 vendor 目录是否可以解决问题。如果它有效,请为结构作者创建一个问题来更新 vendoered 版本或将其完全删除。有可能(取决于销售版本的年龄)已经进行了重大更改。
同时通读 initial issue。看来你可以使用
CGO_LDFLAGS_ALLOW='-Wl,--no-as-needed' go install
还有。
此行为已在 GO 1.10 版中修复(候选发布版仍然存在此问题)。昨天,我在迁移到 GO v1.10 (Ubuntu) 后编译了所有内容。
另见:https://go-review.googlesource.com/c/go/+/93836/7/src/cmd/go/internal/work/security.go
仅供参考,PKCS11 并不是使用 cryptogen 所必需的。
你实际上可以使用 -tags "nopkcs11"