在MacOS Sierra下编译Bitcoin源代码
前言:
最近在复习《mastering Bitcoin》这本书,原文电子书戳这里:
http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter03.html
Anyone who wanna know sth about Bitcoin, can read this book - Mastering Bitcoin.
https://www.bitcoinbook.info/
对于开发者,可以选择下载包含完整源代码的ZIP包,也可以从Github上克隆权威的源码仓库,以下我会示范使用 git clone 代码。
I'd like to clone code from github below.
1. clone code and find the latest stable version
$ git clone https://github.com/bitcoin/bitcoin
$ cd bitcoin
$ git tag
默认情况下,本地clone 的代码将与最新的代码同步,这有可能是bitcoin的一个不稳定或是 beta 版本。在编译这些代码之前,签出发布标签(realease tag)以选择某一特定版本(a specific version)。 这将通过一个关键的标签标记,让本地拷贝与代码仓库的特定快照同步。开发者用标签来标记代码的特定发行版本号(version numBTCer)。
执行完git tag
后,列出的标签是bitcoin的所有发行版本,按照约定,带有rc后缀的是预发行版本,可以用来测试。没有后缀的稳定版本可以直接在产品环境上运行。目前最新的稳定版本是v0.14.1,因此我要在这里切换到该版本下:
$ git checkout v0.14.1 # choose a recent stable version
2. check the latest doc and install dependencies
这时候,打开编辑器,查看并阅读编译bitcoind命令行客户端的说明。
我用的是 mac,直接找到说明文件 doc/build-osx.md。
仔细阅读build文档第一部分中build的必备条件。这些是在你编译之前你的系统上必须具备的库文件。如果缺少这些必备条件,构建过程将会出现错误并导致失败。
按照说明文档,需要安装 xcode 和 homebrew,略过。
其次,需要按照好几个套件:
$ brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf --c++11 qt5 libevent
安装过程中,如果遇到红色 error,可以在执行完成后,重新尝试安装安装 error 的套件。
比如,像下图这样:
berkeley-db4
安装失败,需要重新安装:
$ brew install berkeley-db4
,当然提示升级的也可以按照提示升级,比如上图的 openssl
和 automake
。
$ brew upgrade openssl
$ brew upgrade automake
3. Build Bitcoin Core
好了,准备过程做好了,就可以开始构建过程,通过authgen.sh脚本,生成一组构建脚本,autogen.sh脚本创建了一系列的自动配置脚本,会询问你的系统以发现正确的设置,确保你已安装必要的库来编译源码。这里面最重要的是configure脚本,它会提供许多不同的选项来定制构建过程。
$ ./autogen.sh
其次,是运行configure脚本就可以自动发现所有必要的库,然后为我们的系统创建一个定制的构建脚本。如果一切顺利,configure命令将会以创建可定制的构建脚本结束。这些构建脚本允许我们编译bitcoind。如果有缺失的库或是错误,configur命令将会以错误信息终止。如果出现了错误,可能是因为缺少库或是有不兼容的库。重新检查构建文档,确认你已经安装缺失的必备条件。然后运行configure,看看错误是否消失了。下一步,你将编译源代码,这个过程可能需要1个小时完成。在编译的过程中,你应该过几秒或是几分钟看一下输出结果。如果出现了问题,你会看到错误。如果中断了,编译的过程可以在任何时候恢复。
$ ./configure
如果没有问题,输入make命令就可以开始编译了
$ make
$ make check # run tests
如果一切顺利,bitcoind现在已经编译完成。最后一步就是通过make命令,安装 bitcoind 可执行文件到你的系统路径下:
$ make install
4. final check
可以通过询问系统下面2个可执行文件的路径,来确认bitcoin是否安装成功。
$ which bitcoind
=> /usr/local/bin/bitcoind
$ which bitcoin-cli
=> /usr/local/bin/bitcoin-cli
bitcoind 默认的安装位置是/usr/local/bin。当你第一次运行bitcoind时,它会提醒你用一个安全密码给JSON-RPC接口创建一个配置文件。通过在终端输入bitcoind就可以运行bitcoind了:
$ bitcoind