比特幣原始碼研讀1——下載與編譯

weixin_34194087發表於2017-09-08

身為一個程式猿,面對用高手程式設計實現的比特幣,不研究下原始碼實在說不過去。廢話少說,直奔主題。第一節是關於比特幣原始碼的下載與編譯。

本文的操作都是基於Linux環境進行的。


一  基本環境搭建

虛擬機器:Oracle VM VirtualBox

Linux版本:ubuntu-16.04.3-desktop-amd64

當然其他版本也行,只要能安裝成功即可。

至於安裝教程,網上一搜一大堆,這裡就不給你做伸手黨的機會了。

直接進入第二步原始碼下載


二 原始碼下載

1. 軟體更新

新下載的Linux系統,建議登入系統後,先更新下軟體。

左上角search your computer, 輸入 terminal,或者快捷鍵Ctrl+Alt+T, 開啟命令列終端,輸入以下命令:

sudo apt-get update

sudo apt-get upgrade

基礎依賴庫下載,輸入以下命令,如果怕打錯,可以直接複製貼上。

tips: 第三句不要換行執行。

sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev

sudo apt-get install libboost-all-dev

sudo apt-get install libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

sudo apt-get install libqrencode-dev

sudo apt-get install libminiupnpc-dev

2. 安裝git 工具

比特幣的原始碼都是放在Github網站上面的。需要通過git工具下載到本地。執行下面的語句,如果報錯說明系統沒有該工具,需要安裝,已下載的可跳過。

sudo apt install git

4916340-59514b69bc1bd4f0.png

3. 下載原始碼

接下來就是下載原始碼了,

cd ~

git clone https://github.com/bitcoin/bitcoin.git


4916340-791ae504ae749e12.png

3. 安裝 berkeley-db4

      接著安裝 berkeley-db4,注意路徑是在個人Home目錄,需要進入使用命令 “cd ~”即可。這裡用的是4.8版本。

cd ~

mkdir bitcoin/db4/

wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'

4916340-d17ccb9494a7f0db.png

下載完成後執行下面語句進行安裝

tar -xzvf db-4.8.30.NC.tar.gz

cd db-4.8.30.NC/build_unix/

../dist/configure --enable-cxx --disable-shared --with-pic --prefix=/home/theusername/bitcoin/db4/

make install

此時出現了錯誤,Permission denied,沒有許可權建立目錄/home/theusername

4916340-e049e0360442b82d.png

所以需要改用root使用者許可權來執行

sudo make install

4916340-e8130ed7456a8e60.png

4. 編譯比特幣原始碼

cd ~/bitcoin/

./autogen.sh

./configureLDFLAGS="-L/home/theusername/bitcoin/db4/lib/" CPPFLAGS="-I/home/theusername/bitcoin/db4/include/"

make -s -j5

以下截圖是執行前面兩個語句的結果

4916340-6ea996c26a4da137.png

但是在執行第三條語句的時候報錯了

4916340-519ec7bf4c10c940.png

看錯誤是libevent沒找到,看來是少了libevent庫,上網搜尋了下,發現是缺了libevent-dev,安裝上即可。

sudo apt-get install libevent-dev

執行成功

4916340-35d683ce078a5119.png

但是執行最後一條語句的時候又報錯了

4916340-e571957b6a127c01.png

這個錯誤只是說內部編譯器錯誤,不好定位問題,那就再執行一遍該語句。這次錯誤就很明顯了:Virtual memoryexhausted: Cannot allocate memory. 記憶體不足,看來是我分配的記憶體空間不夠。退出Ubuntu後重新分配2G記憶體。

4916340-e537f34cebe61b9d.png

啟動後進入系統重新執行以下語句:

cd ~/bitcoin/

./autogen.sh

./configure LDFLAGS="-L/home/theusername/bitcoin/db4/lib/" CPPFLAGS="-I/home/theusername/bitcoin/db4/include/"

make

sudo make install

tips: 第四個語句"make"執行了25分鐘左右,需要耐心點哦,這時不妨泡杯茶或衝杯咖啡喝喝,權當中場休息。

4916340-7ff6a8efa61a907b.png

5. 檢查結果

我們可以通過詢問系統下面2個可執行檔案的路徑,來確認bitcoin是否安裝成功。

$ which bitcoind

正確結果: /usr/local/bin/bitcoind

$ which bitcoin-cli

正確結果:/usr/local/bin/bitcoin-cli

如果是以上兩個都與正確結果相符合,恭喜,比特幣客戶端安裝成功!

啟動客戶端, 看到彈出的Welcome視窗,心情十分雞凍呀。。。

bitcoin-qt

4916340-f80ea088dd22ca95.png

tips: 只打算體驗一下,不打算同步所有資料(畢竟有153G),就不要點選OK。

區塊鏈研習社原始碼研讀班 Jacky

參考資料:

比特幣原始碼的編譯及環境搭建

ubuntu下從原始碼編譯比特幣(Bitcoin)客戶端

聊聊比特幣(Bitcoin)客戶端原始碼編譯那些事

相關文章