比特币源码linux下环境配置编译运行bitcoin

时间:2017-03-04 来源:linux网站 作者:Mosen_Huang

由于近期学习区块链,需要学习下比特币源码,所以尝试着在windows和Linux环境下编译运行,但是windows下的环境配置很繁琐总是在装qt的时候报错,下面贴一下在linux环境下的配置和运行步骤(ubuntu)
github源码链接(https://github.com/bitcoin/bitcoin/)
(1)安装依赖包
用命令apt-get install安装,如果没有找到该命令则安装apt-get(自行搜索,安装后sudo apt-get update更新包),如果显示权限不够则加用sudo apt-get install命令
经过验证:必需的依赖包有:
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
(2)将github上的源代码克隆下来
git clone https://github.com/bitcoin/bitcoin.git
注意是https
注:如果没有安装git则先安装(命令:sudo apt-get install git-core)
如果git clone太慢,可以直接上该网址将源码download下来,然后创建文件夹bitcoin,解压到其中。
(3)编译运行
cd bitcoin
会看到整个源码的各种文件,其中有可执行文件autogen.sh和配置文件configure
./autogen.sh
如果报错则加sudo
./configure
该过程则是在你的机器中配置与代码运行相关的依赖并检查必要的环境
我所了解到的bitcoin代码运行机制是多线程的,父进程创建子进程,父进程运行过程中返回后子进程继续进行运行过程的初始化,包括下面12个步骤:
Step 1: setup 设置
Step 2: parameter interactions 参数互动(主要是一些参数设置)
Step 3: parameter-to-internal-flags 参数传入内部标记(bool型变量)
Step 4: application initialization: dir lock,daemonize,pidfile,debug log 应用初始化:锁定目录,后台运行,调试信息
Step 5: verify wallet database integrity 确认钱包数据库的完整性
Step 6: network initialization 网络初始化
Step 7: load block chain 加载块链
Step 8: load wallet 加载钱包
Step 9: import blocks 导入块数据
Step 10: load peers 导入peers
Step 11: start node 开始节点(挖矿程序在这里)
Step 12: finished 完成
所以bitcoin需要检查配置信息以及网络情况,才开始加载块链
执行完.configure之后需要看看是否有相应的错误信息或者WARNING一般warning是可以允许的如果对于bitcoin最后的运行而言,但是我们还是最好逐一排除警告
一开始会出现error的信息:
所以我们改成下面的命令跳过DB版本检测重新执行一遍:
./configure –with-incompatible-bdb
接下来应该是没有error的,此时我们需要往上滚动查看执行结果看是否有warning警告信息
如果是warning:libevent not found
则sudo apt-get install libevent-dev
后重新执行
./configure –with-incompatible-bdb
如果是warning: zmq找不到大于4的版本
则sudo apt-get install libzmq-dev
一般到这里已经可以显示最后的检查结果信息页面了:
如果warning:缺少qt所需的依赖
则sudo apt-get install libqt4-dev
如果还显示warning: libprotobuf找不到
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
到这里虽然有下面两个警告没解决但已经算配置成功了的
其实如果嫌麻烦,当然可以先把必须的跟不必须的一起装了,省的反复执行.confiure命令
此时最后的输出结果为:
(4)执行make命令
sudo make
sudo make install
运行差不多8分钟就已经编译完成
(5)此时执行:
bitcoin-qt
即可调出客户端
会提示加载区块数据,近120G,全部加载完毕则就是我们所说的全节点。

Ubuntu编译运行bitcoin运行全节点的更多相关文章

  1. HTML实现代码雨源码及效果示例

    这篇文章主要介绍了HTML实现代码雨源码及效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  3. 在编译的iOS应用程序(IPA)中加密内容

    由于IPA结构只是一个压缩文件,包含编译代码媒体内容,如图像&音频,我如何保护内容免受别人的窃取?是否有加密可以添加到IPA?

  4. ios – Swift 4向后兼容性

    一起使用.有没有办法在两个版本的Xcode中使这个工作?Swift4是否应该向后兼容?

  5. 源码推荐:简化Swift编写的iOS动画,iOS Material Design库

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. Swift与OC混合编译

    SWift调用OC新建swift文件此时系统自动生成-Bridging-Header.h文件并且TARGETS->BuildSettings->Objective-CBridgingHeader(搜索bridg)选项中会自动填入以上头文件的路径在-Bridging-Header.h中#import要调用的OC对象头文件OC调用Swift在OC文件中#import“

  7. Swift教程01-使用switfc终端命令编译运行swift程序

    应公司的要求,要我研究swift语言,然后给大家进行swift技术培训,买了4,5本swift相关的书籍就开始研究了.今天来介绍一下,swift相关的终端的命令.1.首先我们在桌面上建一个swift文件夹用来存放.swift源文件,打开终端输入cd加空格拖拽文件夹到终端(使用命令ls,cd目录也是等效)3.使用vi命令创建一个HelloWorld.swift源文件进入swift文件夹后,然后使用如

  8. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  9. swift 写的app 源码,保存一下下

    http://www.topthink.com/topic/3345.htmlhttp://www.csdn.net/article/2015-01-09/2823502-swift-open-source-libs

  10. swift 源码网站 code4app

    http://code4app.com/ios/HTHorizontalSelectionList/54cb2c94933bf0883a8b4583http://123.th7.cn/code/DMPagerViewController_2522.html

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部