前言
今天处理区块链项目时候,因需要获取一些链的基础信息或者查询信息,使用到了一些包,写完运行测试时报错如下所示:
区块链使用的是:fisco-bcos
go版本:1.16
编辑器:goland
编辑环境:本地电脑mac osx系统
问题原因
写完逻辑之后运行项目准备测试时编译遇到上述报错fatal error: ‘libsecp256k1/include/secp256k1.h’ file not found,然后自己找了些资料解决了
因为我使用的go mod vender,我也重试重新vender或者go mod tidy但是我的vender里就是没有,可能是mac osx环境下交叉编译含以太坊的依赖出错。
解决方式
解决方法是手动把这些文件移到vendor目录下:
将下列命令中的${GOPATH}替换成你自己的gopath即可(go env即可查看本地的gopath地址)
cp -r \
"${GOPATH}/src/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1" \
"vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/"
当然我也遇到GOPATH不对的地方,即上述问题报错中的GOPATH并非真正我存放gopath的地方
这时候我就打开项目下的依赖,例如我的就是
/users/ic_xcc/development/go/pkg/mod/github.com/ethereum/go-ethereum@v1.9.16/crypto/secp256k1/libsecp256k1
之前通过gopath漏掉了pkg/mod这部分,所以这个也是确定自己包依赖的一种方式之一,总之确认好之后就可以替换上述部分进行手动移动到vender下就可以了。
我的完整命令如下:
cp -r \
"/users/ic_xcc/development/go/pkg/mod/github.com/ethereum/go-ethereum@v1.9.16/crypto/secp256k1/libsecp256k1" \
"vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/"
执行成功如下所示
到此就解决mac osx环境下交叉编译含以太坊的依赖出错的问题啦