当我尝试获取fabric-sdk-go时,出现以下错误:
$ go get github.com/hyperledger/fabric-sdk-go/pkg/fabric-client
# github.com/hyperledger/fabric-sdk-go/vendor/github.com/miekg/pkcs11
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lltdl
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lltdl
collect2.exe: error: ld returned 1 exit status
有没有人知道问题是什么以及如何解决这个问题?
错误消息告诉我们缺少github.com/miekg/pkcs11
所需的库libltdl
。虽然你没有明确提到它,但我认为你正在使用MSYS2作为开发环境。执行以下步骤以安装缺少的库。
搜索缺少的库,在 MSYS2 终端中键入
pacman -Ss ltdl
以获取确切的包名称。在这里,ltdl
是我们从错误消息中获得的与丢失库相关的关键字。你应该得到类似的东西:msys/libltdl 2.4.6-2 A system independent dlopen wrapper for GNU libtool
从结果中我们知道缺少的库
libltdl
包中提供。这看起来微不足道,但有时一个库可能由多个包提供,例如,一个包的前缀为 32 位系统mingw-w64-i686-*
,另一个包的前缀为 64 位系统mingw-w64-x86_64-*
。- 通过以下方式安装软件包:
pacman -S libltdl
. - 通过以下方式重新安装
go
软件包:go get -v github.com/hyperledger/fabric-sdk-go/pkg/fabric-client
。