基于Win10和VS2013-VS2019的 比特币源码(v0.01)编译-第三章

三、第三方依赖编译

在源码readme.txt文件中,我们可以看到比特币源码用到了wxWidgets、Openssl、Berkeley DB、Boost四个库。通过单独下载、编译库文件,可以得到对应的lib/dll和include文件。因此,第三方依赖编译是比特币源码编译的第一步。

3.1 wxWidgets

wxWidgets是一种C++UI构架库,简单来说就是一个免费、开源、跨平台的用户图形界面开发库。其中包含了构建图形界面所需的类,能够快速解决繁琐的图形界面开发需求。比特币中的UI界面都是由wxWidgets实现。

3.1.1 文件下载

官网下载地址:https://www.wxwidgets.org/downloads/

目前,wxWidgets的最新版本为3.1.x的开发版本,其仍处在功能不断升级过程中。因此,我们使用前一个稳定版本wxWidgets-3.0.4, 选择Windows ZIP或 Windows 7z包的下载:
在这里插入图片描述

3.1.2 编译过程

解压后,进入wxWidgets-3.0.4\build\msw文件夹可以看到项目工程文件,可支持VC6、VS2005、VS2008至VS2013多个版本编译,用VS2013打开相匹配的版本wx_vc12.sln:
在这里插入图片描述

在解决方案资源管理器中,右键解决方案’wx_vc12’,选择批生成,如图:
在这里插入图片描述

可点击解决方案配置重新排序,我们选择Win32程序编译比特币源码,因此勾选所有Win32的Debug(必选)和Release配置(可选),点击生成或重新生成编译:

在这里插入图片描述
等待几分钟后,可在wxWidgets-3.0.4\lib\vc_lib路径下,查看到刚生成的库文件,其中u表示Release版本,ud表示Debug版本:
在这里插入图片描述

至此,wxWidgets库编译完成。

3.2 Openssl

作为一个基于密码学的安全开发包,Openssl提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

3.2.1 文件下载

Openssl下载地址:https://www.openssl.org/source/old/1.0.2/

使用openssl-1.0.2大版本,小版本可选择性多样,这里我们选择openssl-1.0.2o.tar.gz下载:
在这里插入图片描述

3.2.2 编译过程

Openssl的编译需要借助编译工具——ActivePerl,ActivePerl是一个perl脚本解释器,用于编译perl程序。

ActivePerl工具包解压后,双击安装,默认选项安装即可:
在这里插入图片描述

在cmd命令窗口可通过perl -v查看工具是否安装成功:
在这里插入图片描述

打开VS2013的VS2013 x86 本机工具命令提示:
在这里插入图片描述
在这里插入图片描述

进入Openssl源码解压所在路径,cd /d E:\Bitcoin-pre\ThirdParty\openssl-1.0.2o:
在这里插入图片描述

项目为Win32程序,因此,我们需要编译Win32版的Openssl。查看说明文件INSTALL.W32以获取编译方法:
在这里插入图片描述

项目代码为C++语言,找到编译提示:
在这里插入图片描述

如果需要本地优化,下载Nasm,但实际上要求不严格,直接用no-asm选项,可以看到主要分为5步:
在这里插入图片描述

运行perl Configure VC-WIN32 no-asm --prefix=E:/openssl_32,其中E:/openssl_32表示生成输出位置(需要新建openssl_32目录):
在这里插入图片描述

看到Configured for VC-WIN32.表示成功,运行ms\do_ms:
在这里插入图片描述

运行nmake -f ms\ntdll.mak:
在这里插入图片描述

运行nmake -f ms\ntdll.mak test进行测试:
在这里插入图片描述

看到编译后出现passed all tests即编译完成,运行nmake -f ms\ntdll.mak install进行安装:
在这里插入图片描述
可在E:\openssl_32中找到生成文件:
在这里插入图片描述

其中,bin文件存放.dll动态库(运行时需要):
在这里插入图片描述

include文件夹openssl目录下存放.h头文件:
在这里插入图片描述

lib文件存放.lib静态库(源码编译时需要):
在这里插入图片描述

友情链接:静态库/动态库的区别 https://blog.csdn.net/jeffreyst_zb/article/details/7045344

3.3 Berkeley DB

Berkeley DB(简称为BDB)是一个嵌入式K/V数据库,它适合管理海量的、简单的数据。由于Berkeley DB库的特点,它在比特币源码bitcoin-v0.01中作为数据存储媒介被大量使用,源码中的*.dat数据文件是基于Berkeley DB存储的。

3.3.1 文件下载

官网下载地址:https://www.oracle.com/database/technologies/related/berkeleydb-release-history.html

目前,Berkeley DB的最新版本为18.1.x的开发版本。我们使用与当时bitcoin-v0.01搭建时间相接近的Berkeley DB 4.8.30版本, 选择Berkeley DB 4.8.30.zip或 Berkeley DB 4.8.30.msi Windows installer下载:
在这里插入图片描述

3.3.2 编译过程

解压后,进入db-4.8.30\build_windows文件夹可以看到项目工程文件,用VS2013打开BDB_dotNet.sln:
在这里插入图片描述

在资源管理器中,右键解决方案’BDB_dotNet’,选择批生成,如图:
在这里插入图片描述

勾选db项目Win32的Debug配置,点击生成或重新生成编译:
在这里插入图片描述

在db-4.8.30\build_windows\Win32\Debug路径下,查看到刚生成的,lib和dll库文件:
在这里插入图片描述

至此,Berkeley DB库编译完成。

3.4 Boost

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。它由Boost社区组织开发、维护的。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。

3.4.1 文件下载

官网下载地址:https://www.boost.org/users/history/version_1_35_0.html

bitcoin-v0.01源码文件的readme.txt有明确写出使用了boost库的1.35版本,因此我们使用Version 1.35.0,选择boost_1_35_0.7z或 boost_1_35_0.zip下载:
在这里插入图片描述

3.4.2 编译过程

解压后,进入boost_1_35_0文件夹可以看到boost文件夹,里面存储着boost头文件:
在这里插入图片描述

Boost库完全在.hpp中实现的,于是只要包含头文件即可,库文件编译可以省略。

完整版PDF:CSDN下载

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章