中国领先的IT技术网站
|
|

1.4.6 动手编译比特币源码(1)

《白话区块链》第1章初识区块链,本章我们将从区块链的原理及分类、技术组成、技术特点等出发来初步介绍区块链的概念,并通过分析比特币的结构让大家对区块链有一个感性的认识。比特币作为区块链技术的第一个应用,它的原理设计影响深远。本节为大家介绍动手编译比特币源码。

作者:蒋勇/文延/嘉文来源:机械工业出版社|2017-11-24 13:52

开发者大赛路演 | 12月16日,技术创新,北京不见不散


1.4.6 动手编译比特币源码(1)

如果有人一直在跟你说有个煎饼多好吃,芝麻有多香,鸡蛋有多金黄,你肯定希望去看一看;如果有人一直在跟你说有首歌曲多动人,旋律有多美,歌词有多感人,你肯定希望去听一听……是的,我们说了那么多的概念、技术名词,界面也看过了,可是这么一个软件到底是怎么编译出来的呢?无论你是不是程序员,都可以感受一下这个过程,看看这个设计巧妙的软件是怎样通过源代码生成可执行程序的。

比特币的源码是公开的,并且维护在GitHub网站上:https://github.com/bitcoin/bitcoin,目前该源码由比特币基金会进行维护。版权类型是MIT,这是一个很松散的版权协议,每一个对比特币源码感兴趣的人都可以自由地去复制、修改,以进行学习研究。

打开网页后,可以看到有详细的程序源码以及附带的文档说明,我们就从这里下载源码进行编译。在说明编译步骤之前,先介绍些概要前提吧,烹调大餐前得先看个菜谱不是。首先,比特币的源码是使用C++语言开发的,因此想要深入研究源码的朋友们,最好要有不错的C++基础;其次,源码中使用了很多其他的开源库,比如libssl-dev、libevent-dev、libboost-all-dev等,因此编译的时候也需要先安装这些第三方的依赖;另外,比特币源码在Linux系统上进行编译最方便,很多依赖库都是先天开发在Linux平台的,当然其他系统上也可以进行编译。

好了,接下来,我们就开始这道大餐吧!

1.准备操作系统环境

这里我们使用Ubuntu 16.04 LTS桌面版,关于Ubuntu的安装就不在这里赘述啦,物理安装或者用虚拟机加载安装都可以,装好系统后,首先使用如下命令更新一下系统的软件源:

  1. sudo apt-get update 

2.获得源码

先来看下获得源码的命令:

  1. sudo apt-get install git  
  2. mkdir ~/bitcoinsource  
  3. git clone https://github.com/bitcoin/bitcoin.git "~/bitcoinsource" 

1)第1条命令是安装git命令工具,这个git工具是用来从GitHub上下载源码的,事实上,使用git工具不但可以下载源码,也可以在本机创建自己的版本库;

2)第2条命令是在当前用户的目录下创建一个文件夹,用以保存即将下载的比特币源码,读者朋友具体操作时,可以自行决定路径和文件夹名称;

3)第3条命令就是从GitHub上下载比特币的源码到创建的bitcoinsource目录中。这里有个问题需要注意,如果在git clone过程中终止了,当再次进行clone时会出错,一般会有这样的提示:

  1. git clone:GnuTLS recv error(-9):A TLS packet with unexpected length was received 

出错的原因是因为git clone并不支持断续下载,删除目录后重新创建一个新目录再clone就可以了。

除了上述的git clone命令方法外,实际上,我们可以在GitHub上直接下载源码压缩包,下载下来的文件名一般为bitcoin-master.zip,然后解压缩即可:

  1. unzip bitcoin-master.zip 

解压缩后,将当前工作目录cd到bitcoin-master中,至此就可以开始着手编译了。

3.安装依赖库

工欲善其事必先利其器,比特币源码中使用了很多第三方的功能库,这些都是必需的依赖,正所谓一个好汉三个帮,一个篱笆三个桩,没有这些可以自由方便使用的库,使用C++开发比特币软件就要复杂不少。

比如,以下3行命令主要安装C++编译器和make工具:

  1. sudo apt-get install make  
  2. sudo apt-get install gcc  
  3. sudo apt-get install g++ 

比如,以下命令主要是安装依赖库:

  1. sudo apt-get install build-essential  
  2. sudo apt-get install libtool  
  3. sudo apt-get install autotools-dev  
  4. sudo apt-get install autoconf  
  5. sudo apt-get install pkg-config  
  6. sudo apt-get install libssl-dev  
  7. sudo apt-get install libevent-dev  
  8. sudo apt-get install libboost-all-dev  
  9. sudo apt-get install libminiupnpc-dev  
  10. sudo apt-get install libqt4-dev  
  11. sudo apt-get install libprotobuf-de  
  12. sudo apt-get install protobuf-compiler  
  13. sudo apt-get install libqrencode-dev 

libevent-dev是一个网络库,实现网络通信功能;libssl-dev是一个密码算法库,提供了随机数生成,椭圆曲线密码算法等功能;libboost-all-dev是一个C++工具库,提供各种C++调用的基础功能库,如多线程调用以及一些有用的数据结构等;libqt4-dev是一个跨平台的C++库,用于实现跨平台运行的软件界面,这些都是比特币源码中需要用到的功能依赖库。值得一提的是,这些依赖库也都是开源的,也就是说,比特币源码不但本身是自由开源的,使用的其他依赖库也是自由开源的,这样就方便了那些希望对比特币源码进行深入研究的朋友,可以对每一个实现细节细嚼慢咽,尽情去学习和研究。

这两行命令主要安装比特币需要用到的数据存储驱动,其使用的类型是Berkeley DB,是一种开源的文件数据库。

  1. sudo apt-get install libdb-dev  
  2. sudo apt-get install libdb++-dev 

到这里为止,就万事俱备只欠东风啦,该准备的材料都准备好了。

4.编译准备

这两个步骤是使用make工具进行编译的准备工作。

  1. ./autogen.sh  
  2. ./configure 

需要注意的是,在执行./configure的时候,有可能会看到这样的提示,如下:

  1. configure: error: Found Berkeley DB other than 4.8, required for portable wallets (--with-incompatible-bdb to ignore or --disable-wallet to disable wallet functionality) 

看提示是configure命令执行时出的问题,大概的意思是发现Berkeldy DB的版本高于4.8,我们在安装Berkeley DB的时候,命令下载安装的是最新版本,这个其实就是个警告而已,没什么影响,提示中也给出了解决方法,在configure的命令后面加上一个参数就可以了:

  1. ./configure —with-incompatible-bdb 

执行完毕就可以了,接下来的工作就简单啦,直接make编译安装即可。

5.编译安装

  1. make  
  2. sudo make install 

执行完毕后,就大功告成啦,接下来就可以运行比特币客户端程序啦。我们可以运行带界面的程序试试,经过这个步骤,在源码目录src/qt/下生成了可执行程序,同时安装到了/usr/local/bin目录下。

6.运行测试

输入以下命令:

  1. bitcoin-qt 

激动人心的时刻就来临啦!我们可以看到比特币的界面显示出来了,当然了,也可以去尝试运行bitcoind程序。至此,在Ubuntu操作系统上编译比特币源码就结束了。限于篇幅,在其他操作系统比如Mac、Windows上的编译过程就不再赘述了,读者朋友如果感兴趣,也可以参考比特币源码中doc文件夹下面的build-osx.md和build-windows.md的文件说明,分别是尝试在Windows和MacOS系统上的编译。

7.使用IDE管理源码

按理说到这里也没什么可说的了,编译完成了,运行也可以了,不过有没有觉得哪里不太爽呢?对了,缺少一个IDE(Integrated Development Environment,集成开发管理),这么多的文件,用文本编辑器一个个看,要看花眼了。好,接下来我们就安装一个IDE工具来管理这些源码,比特币系统是使用C++开发的,图形界面部分使用的又是QT组件,那就选择Qt Creator吧,本身也开源,而且跨平台,对C++的编译支持也非常好。由于上述的源码编译是在Ubuntu下进行的,因此,我们仍然在Ubuntu下进行安装设置,还是按照步骤来一步步说明吧。

(1)准备Qt Creator

可以直接到Qt Creator官网下载,Qt分为商业版和开源版本,我们使用开源版本即可,下载后得到一个文件qt-opensource-linux-x64-5.6.2.run,读者朋友自己下载的时候,还可以选择在线安装版和离线安装版,这里下载的是离线安装版,进入到文件所在的目录,执行如下命令:

  1. chmod +x qt-opensource-linux-x64-5.6.2.run  
  2. ./qt-opensource-linux-x64-5.6.2.run 


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

点石成金:访客至上的网页设计秘笈(原书第2版)

有些网站看起来很清爽; 有些网站看起来很杂乱; 有些网站能让你轻松地找到资料; 有些网站让你犹如置身迷宫…… ...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× 51CTO学院双十二活动