比特幣原始碼linux下環境配置編譯執行bitcoin
github原始碼連結(https://github.com/bitcoin/bitcoin/)
由於近期學習區塊鏈,需要學習下比特幣原始碼,所以嘗試著在windows和linux環境下編譯執行,但是windows下的環境配置很繁瑣總是在裝qt的時候報錯,下面貼一下在linux環境下的配置和執行步驟(ubuntu)
(1)安裝依賴包
用命令apt-get install安裝,如果沒有找到該命令則安裝apt-get(自行搜尋,安裝後sudo apt-get update更新包),如果顯示許可權不夠則加用sudo apt-get install命令
經過驗證:必需的依賴包有:
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libdb-dev
sudo apt-get install libdb++-dev
sudo apt-get install libdb5.1++-dev
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libssl-dev
sudo apt-get install build-essential
sudo apt-get install libminiupnpc-dev
sudo apt-get install autoconf
(2)將github上的原始碼克隆下來
注意是https
注:如果沒有安裝git則先安裝(命令:sudo apt-get install git-core)
如果git clone太慢,可以直接上該網址將原始碼download下來,然後建立資料夾bitcoin,解壓到其中
(3)編譯執行
cd bitcoin
會看到整個原始碼的各種檔案,其中有可執行檔案autogen.sh和配置檔案configure
./autogen.sh
如果報錯則加sudo
./configure
該過程則是在你的機器中配置與程式碼執行相關的依賴並檢查必要的環境
我所瞭解到的bitcoin程式碼執行機制是多執行緒的,父程序建立子程序,父程序執行過程中返回後子程序繼續進行執行過程的初始化,包括下面12個步驟:
Step 1: setup 設定
Step 2: parameter interactions 引數互動(主要是一些引數設定)
Step 3: parameter-to-internal-flags 引數傳入內部標記(bool型變數)
Step 4: application initialization: dir lock, daemonize, pidfile, debug log 應用初始化:鎖定目錄,後臺執行,除錯資訊
Step 5: verify wallet database integrity 確認錢包資料庫的完整性
Step 6: network initialization 網路初始化
Step 7: load block chain 載入塊鏈
Step 8: load wallet 載入錢包
Step 9: import blocks 匯入塊資料
Step 10: load peers 匯入peers
Step 11: start node 開始節點(挖礦程式在這裡)
Step 12: finished 完成
所以bitcoin需要檢查配置資訊以及網路情況,才開始載入塊鏈
執行完.configure之後需要看看是否有相應的錯誤資訊或者WARNING一般warning是可以允許的如果對於bitcoin最後的執行而言,但是我們還是最好逐一排除警告
一開始會出現error的資訊:
所以我們改成下面的命令跳過DB版本檢測重新執行一遍:
./configure –with-incompatible-bdb
接下來應該是沒有error的,此時我們需要往上滾動檢視執行結果看是否有warning警告資訊
如果是warning:libevent not found
則
sudo apt-get install libevent-dev
後重新執行
./configure –with-incompatible-bdb
如果是warning: zmq找不到大於4的版本
則
sudo apt-get install libzmq-dev
一般到這裡已經可以顯示最後的檢查結果資訊頁面了:
如果warning:缺少qt所需的依賴
則
sudo apt-get install libqt4-dev
如果還顯示warning: libprotobuf找不到
則
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
到這裡雖然有下面兩個警告沒解決但已經算配置成功了的
其實如果嫌麻煩,當然可以先把必須的跟不必須的一起裝了,省的反覆執行.confiure命令
此時最後的輸出結果為:
(4)執行make命令
sudo make
sudo make install
執行差不多8分鐘就已經編譯完成
(5)此時執行:
bitcoin-qt
即可調出客戶端
會提示載入區塊資料,近120G,全部載入完畢則就是我們所說的全節點,對於區塊資料這個問題我還是疑惑,不知有沒有大神解釋一下為什麼非得載入這麼大的資料,不應該載入的是區塊的頭部麼,為什麼這麼大!