最近打算研究下比特幣源碼,卻發現這套源碼正常情況下得在linux下編譯運行,而我的機器是windows的。
怎么辦呢?
起初打算用mingw和cygwin搞搞看,試了許久后發現行不通,必須轉到linux環境下才行。
為了在windows下使用linux環境,最初是打算用虛擬機的,后來又想起win10下已經支持linux了(WSL),所以打算先用WSL試試,沒想到竟然真的成功了。
故寫下這篇文章,記錄下環境搭建過程,以免以后再有類似需求的話會走彎路。
安裝並配置WSL
在開始之前先確定一下Windows版本是不是Windows10,然后建議更新到最新版.
打開 Microsoft Store , 搜索 Linux 會有三個結果 Ubuntu , openSUSE Leap42 , SUSE Linux Enterprise Srever

因為日用為主所以這里選擇 Ubuntu,用Ubuntu作為示范(WSL里的Ubuntu自帶git,vim,ssh等常用軟件,其他的沒用過不清楚).
傻瓜式安裝完成之后(連下一步都沒有),會彈出通知直接打開就行,如果沒有通知可以去開始里找到剛剛安裝好的 Ubuntu 打開就行了

但是,這個時候會發現,不能用提示沒有打開WSL,需要啟動后重試

需要到 控制面板\所有控制面板項\程序和功能 中選擇 啟用或者關閉Windows功能

找到 適用於Linux的Windows子系統 並勾選,然后 確定 選擇 立即重新啟動

重啟之后再次打開 Ubuntu 就可以使用了,根據提示輸入用戶名,兩次輸入密碼就可以看見熟悉的命令行

然后熟悉的套路,先設置root用戶
sudo passwd root
su root
然后輸入root用戶的密碼即可,接着更換 apt 的數據源
cd /etc/apt #進入配置文件所在目錄 cp sources.list sources.list.bak #備份配置文件 vim sources.list #編輯配置文件
將下面的配置覆蓋 sources.list 中的配置
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
於是我就想,既然這是安裝在Windows上的子系統,那是不是應該有着類似於共享文件夾的東西,於是找到了這么一個文件夾
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
這個就是 Ubuntu WSL版的根目錄,接着到 *etc\apt* 下找到 sources.list 用之前貼的配置文件覆蓋即可.接着更新數據源
sudo apt-get update #更新源 sudo apt-get upgrade #更新軟件
安裝並編譯比特幣源碼
首先,我們去拿比特幣源碼
git clone https://github.com/bitcoin/bitcoin.git
然后,執行以下命令,安裝編譯所需的組件
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 sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler sudo apt-get install libqrencode-dev libminiupnpc-dev
第三步,安裝berkeley-db(伯克利 數據庫):
Berkeley DB是一個開源的文件數據庫,介於關系數據庫與內存數據庫之間,使用方式與內存數據庫類似,它提供的是一系列直接訪問數據庫的函數,而不是像關系數據庫那樣需要網絡通訊、SQL解析等步驟。
在bitcoin目錄下建立文件夾db4:
cd bitcoin
mkdir db4
然后下載berkeley-db安裝包:
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
我安裝這個版本的berkeley挺順利的。如果不順利,可以嘗試下載
wget 'http://download.oracle.com/berkeley-db/db-6.2.32.NC.gz'
這個版本的數據庫。
接下來就是解壓和編譯:
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
最后,編譯比特幣主代碼:
進入代碼主目錄
./autogen.sh
./configure LDFLAGS="-L/home/theusername/bitcoin/db4/lib/" CPPFLAGS="-I/home/theusername/bitcoin/db4/include/"
make
sudo make install
驗證是否安裝成功:
那怎樣證明安裝成功了呢。我們通過以下兩個命令行進行驗證:
$ which bitcoind
/usr/local/bin/bitcoind
$ which bitcoin-cli
/usr/local/bin/bitcoin-cli
結果正常輸出了。終於完成了進入比特幣源碼世界的第一步了。
本博文借鑒資料:
https://www.jianshu.com/p/0d3a32a0a973
https://www.jianshu.com/p/6b02948b3d37