静态分析了Bitcoin core部分代码后,感觉自己研究的方向好像走偏了,我认为bitcoin core代码的核心在于比特币协议的实现,因此,我应该把整个研究重心放在比特币协议的实现上。
为了能够动态调试bitcoin core,提高剖析比特币协议实现的效率,我决定,通过VS编译bitcoin core。
在此过程中,遇到了诸多问题,记录于此,方便他人。
在使用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安装完成!
执行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
原因:缺少英文语言包
解决方案:
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组件
解决方案:
独立组件
MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.20)
,更新。MSVC v141 - VS 2017 C++ x64/x86 生成工具(v14.16)
即可。)安装完所需的依赖库之后,便可以通过vs打开bitcoin项目了。
打开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 进行编译