购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 bitcoind客户端的编译过程

如前所述,比特币是一种去中心化的软件,只有客户端而无服务器端软件。比特币软件的官方客户端有两个版本:一个是图形界面的版本,通常被称为Bitcoin;还有一个简洁命令行的版本,通常被称为bitcoind。它们都是开放源代码的,两个版本相互兼容,有同样的命令行参数,读取相同的配置文件,读写相同的数据文件。可以任选Bitcoin客户端或bitcoind客户端中的一个来运行(包括源代码分析、编译、运行、观察和实验),如果尝试同时运行两个客户端,会提示已经有一个客户端在运行并且自动退出。

作为程序开发人员,建议重点研究bitcoind,因为Bitcoin与bitcoind的差异化部分仅仅在于GUI(面向终端用户的图形界面),完全不涉及比特币和区块链的底层技术,因此大可以放心地忽略,对后续的研究与实践工作也毫无影响。

bitcoind支持在Linux、Mac、Windows等平台编译运行,下面选择Ubuntu 14.04版本作为开发测试环境,这也是目前在阿里云和linode等云服务器中部署产品选择的常用版本。Mac、Windows平台下的编译和运行请读者自行学习。

2.1.1 Ubuntu下的实验环境准备

首先要安装Ubuntu Linux环境,如果习惯使用Windows,也可以在VMware下安装虚拟环境。

在Ubuntu 14.04中按Ctrl+Alt+T快捷键,启动Terminal/shell。如图2-1和图2-2所示,分别执行如下两个命令,用来更新安装源和安装必备实验环境(各种工具和依赖库)。

    sudo apt-get update
    sudo apt-get install git autoconf make gcc g++ libdb-dev libdb++-dev
libboost-all-dev zlib1g-dev libssl-dev build-essential libminiupnpc-dev
libtool    pkg-config  libevent-dev  libzmq3-dev  libqt4-core  libqt4-gui
libqt4-dev

图2-1 更新安装源

图2-2 安装必备实验环境

2.1.2 Ubuntu下获得bitcoind源代码

如图2-3所示,顺次执行如下命令:

git config --global core.compression -1
git clone -b v0.12.1 --depth=1 https://github.com/bitcoin/bitcoin.git

图2-3 从github下载bitcoin源代码

开始在当前目录下载bitcoin源代码(本书选择经典版本bitcoin v0.12.1作为研究对象)。下载完毕后执行chmod 777 -R bitcoin及cd bitcoin,进入bitcoin主目录。

2.1.3 Ubuntu下编译bitcoind

编译过程如下。

● 生成编译源码所需要的库配置:sudo ./autogen.sh。

● 生成makefile文件:./configure --with-incompatible-bdb。

● 编译:make。其中编译好的bitcoind、bitcoin-tx和bitcoin-cli保存在src目录下。

● 安装编译好的二进制文件(可选):make install。

● 运行:执行图形化客户端程序或全节点挖矿客户端程序。

● bitcoin-qt或bitcoind -server –printtoconcole。

注意: 不要在编译上大费周章(不同版本的bitcoin对gcc、g++的版本要求不同,不同版本的gcc、g++的兼容与切换技巧不同),下载源代码并基本编译成功后,应当立即着手开始了解源代码的框架结构(类似于作文的大纲),理解核心代码、快速上手和进入开发阶段才是王道,2.3节和2.4节将分析bitcoind的核心源代码,并基于源代码进行简单的修改实验。

2.1.4 兼容和切换编译器版本

在上述实验的过程中,可能会提示缺少C++17环境支持,遇到该提示的读者可以通过安装gcc/g++ ver9以解决问题,在这个过程中不提倡卸载低版本的gcc/g++编译器,而应将两种版本的编译器以兼容的切换方式进行共存管理。

1. 安装gcc/g++到ver9以支持C++17
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-9

注意,g++是C++编译器,gcc是C编译器,安装g++ ver9的同时也会安装gcc ver9。

2. 切换gcc和g++到ver9

(1)切换gcc到ver9,如图2-4所示。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --config gcc

图2-4 切换gcc到ver9

输入选项4后按Enter键,运行gcc -v查看,发现gcc已经切换到ver9。

(2)切换g++到ver9,如图2-5所示。

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40
sudo update-alternatives --config g++

图2-5 切换g++到ver9

直接按Enter键选择默认90模式或输入2后按Enter键,运行g++ -v查看,发现g++已经切换到ver9。 uCjK1grwDkj34CJJ+z7AFu07NQN3LSYvDEZh8ox2AVpHyLdLBLZPu3ur3CK4f5vd

点击中间区域
呼出菜单
上一章
目录
下一章
×