基於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下載

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