您的位置:首页 > 其它

【VS2019】编译Bitcoin Core

2020-02-02 11:38 4443 查看

前言

静态分析了Bitcoin core部分代码后,感觉自己研究的方向好像走偏了,我认为bitcoin core代码的核心在于比特币协议的实现,因此,我应该把整个研究重心放在比特币协议的实现上。

为了能够动态调试bitcoin core,提高剖析比特币协议实现的效率,我决定,通过VS编译bitcoin core。

在此过程中,遇到了诸多问题,记录于此,方便他人。

1、安装vcpkg

在使用vs编译bitcoin core之前,需要独立安装bitcoin core所需的依赖库。
为提高安装依赖库的效率,在此推荐使用vcpkg工具。

1、https://github.com/Microsoft/vcpkg
2、把vcpkg文件夹加入环境变量中,
3、cmd中执行

bootstrap-vcpkg.bat
,编译vcpkg.exe
4、执行
vcpkg integrate install

至此,vcpkg安装完成!

2、使用vcpkg安装bitcoin core所需的依赖库

执行

vcpkg install --triplet x64-windows-static boost-filesystem boost-signals2 boost-test libevent openssl zeromq berkeleydb secp256k1 leveldb

在执行此命令过程中,可能会遇到如下问题:

问题一

错误信息:

Warning: The following VS instances are excluded because the English language pack is unavailable.

运行环境:Win10 x64、VS2019
原因:缺少英文语言包
解决方案:

  • 打开https://visualstudio.microsoft.com/ru/downloads/,点击
    Tools for Visual Studio
    ,下载
    Build Tools for Visual Studio
  • 下载完成后,运行,选择
    语言包
    ,点击
    英文
    ,更新。
  • 更新完成,重启。

问题二

错误信息:

Error: Building package boost-build:x64-windows-static failed with: BUILD_FAILED

运行环境:Win10 x64、VS2019
原因:缺少build tools组件
解决方案:

  • 运行vs_buildtools,选择
    独立组件
  • 选择
    MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.20)
    ,更新。
  • 更新完成,重启。
    (后续编译过程中,可能还会出现同类问题,以同样方式安装
    MSVC v141 - VS 2017 C++ x64/x86 生成工具(v14.16)
    即可。)

安装完所需的依赖库之后,便可以通过vs打开bitcoin项目了。

3、用VS2019编译bitcoin core

打开

build_msvc
目录下的
bitcoin.sln
文件,,生成解决方案。
在此过程中,又出现了如下问题:

问题三

编译过程中,出现

E1696	无法打开 源 文件 "boost/filesystem.hpp"
错误。
解决方案一:将解决方案的活动平台从
x86
改为
x64

解决方案二:如果确实想生成32位程序的,安装32位相应的boost库即可。
两种方式可以安装32位相应的库:

方式一 愚人的笨招

1、根据VS报的错误,去安装,相应的库,例如:选中

#include <boost/filesystem/fstream.hpp>
,按alt+enter,选择“将安装xxx库的vcpkg命令复制到剪辑板”
2、打开cmd,粘贴命令,安装,重启VS,再次编译,如果仍报错,执行下一步。
3、复制刚才安装好的32位boost库的目录地址(
boost/filesystem/fstream.hpp
的绝对路径)。
4、在报错的模块中,右键,属性,C/C++、附加包含目录、编辑、粘贴。
5、再次编译,成功!

方式二 投机取巧的方法

1、打开cmd。
2、执行

vcpkg install --triplet x86-windows-static boost-filesystem boost-signals2 boost-test libevent openssl zeromq berkeleydb secp256k1 leveldb

问题四

在编译过程中,在

libbitcoin_wallet
模块中出现
C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
错误,导致
libbitcoin_wallet
模块编译失败。
解决方案:

  • 右键点击
    libbitcoin_wallet
    模块,点击属性。
  • 点击
    C/C++
    ,命令行。
  • 添加
    /bigobj
    选项,保存,重新编译。
  • 成功!

参考文献
VS编译Bitcoin Core官方文档
vcpkg工具官方说明文档
Could not locate a complete toolset. Please install the English language pack #3842
boost-filesystem fails to install on Win10 with VS 2019 Preview #5807
error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Bitcoin信仰玩家 发布了2 篇原创文章 · 获赞 0 · 访问量 553 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: