【VS2019】编译Bitcoin Core

前言

静态分析了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 ,按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 进行编译

你可能感兴趣的:(简单)