Linux下Libbitcoin库编译错误:与secp256k1仓库版本不同步
解决libbitcoin与secp256k1版本不同步导致的编译错误
这种依赖仓库版本不兼容的问题在编译开源项目时太常见了,尤其是像libbitcoin这种依赖特定secp256k1版本的项目。别担心,按下面的步骤来就能搞定:
1. 用libbitcoin自带的子模块同步secp256k1版本
libbitcoin其实已经把secp256k1作为子模块管理了,你单独克隆编译最新版的secp256k1自然会和libbitcoin当前版本不匹配。直接用git子模块命令拉取正确的版本:
# 进入你的libbitcoin仓库目录 cd path/to/libbitcoin # 拉取并初始化所有依赖子模块,自动切换到libbitcoin对应版本 git submodule update --init --recursive
2. 清理之前的编译残留
如果之前已经单独编译安装过secp256k1,得先清理掉避免冲突:
# 进入你之前单独编译的secp256k1目录 cd path/to/your/separate/secp256k1 # 清理编译文件并卸载已安装的版本 make clean && sudo make uninstall # 回到libbitcoin目录,清理本地编译缓存 cd path/to/libbitcoin make clean
3. 重新编译依赖与libbitcoin
现在两个仓库版本已经同步了,按正常流程重新编译:
# 进入libbitcoin子模块里的secp256k1目录 cd path/to/libbitcoin/deps/secp256k1 # 编译安装secp256k1(按项目要求的步骤来) ./autogen.sh && ./configure && make && sudo make install # 回到libbitcoin根目录,编译libbitcoin cd path/to/libbitcoin ./autogen.sh && ./configure && make
为什么会出现这个问题?
libbitcoin对secp256k1的API有严格的版本依赖,secp256k1的最新HEAD可能引入了一些API变更,而你拉取的libbitcoin版本还没适配这些变更。通过子模块同步,就能保证你用的secp256k1版本是libbitcoin当前代码经过测试完全兼容的版本。
内容的提问来源于stack exchange,提问作者skywarp
相关产品推荐
相关产品推荐

