fatal error: ‘libsecp256k1/include/secp256k1.h‘ file not found(已解决)

前言

今天处理区块链项目时候,因需要获取一些链的基础信息或者查询信息,使用到了一些包,写完运行测试时报错如下所示:
在这里插入图片描述
区块链使用的是: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环境下交叉编译含以太坊的依赖出错的问题啦

参考文章

mac osx环境下交叉编译含以太坊的依赖出错解决方案


版权声明:本文为ic_xcc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。