APP下载

基于win7+MinGW平台编译bitcoin 0.1.0时遇到的问题及其解决办法

2020-03-03张玉东闫文林

江苏科技信息 2020年32期
关键词:编译器文件夹路由

张玉东,闫文林

(江苏师范大学,江苏徐州221116)

0 引言

2008年10月31日,一位精通密码学的神秘极客Satoshi Nakamoto(中文译为中本聪)在技术论坛metzdowd.com上发表了题为“Bitcoin:A Peer-to-Peer Electronic Cash System”[1-2]的论文(人称“比特币白皮书”),标志着比特币的诞生。2017年12月7日,比特币最高价格突破19 000美元/枚。

比特币是数字货币之一,其运行的基础是区块链技术。区块链最典型的特性是“去中心化”——不需要借助任何中间机构(比如银行)即可实现可信任的价值传输(比如转账)。此外,它还具有操作不可逆、不可伪造、匿名性、可溯源、跨平台等优良特性。当前,区块链技术正在尝试应用于跨国贸易、物流溯源、产权保护、身份认证等众多领域。它可以大大降低社会管理成本,提高工作效率,未来甚至不排除重塑社会治理结构,带来社会巨大变革。

1 学习区块链技术的重要性与意义

区块链是21世纪计算机应用领域的一个伟大创新,正在引起社会的高度重视。当前众多企业成立了区块链研究院,部分知名高校设立了区块链专业。

2019年10月24日下午,中共中央政治局就区块链技术发展现状和趋势进行集体学习。习总书记强调“要强化基础研究,提升原始创新能力,努力让我国在区块链这个新兴领域走在理论最前沿、占据创新制高点、取得产业新优势”。

关于数字货币和区块链,网上有很多学习资料。但是这些资料多偏向于相关概念和思想,指导编程的相对较少。特别是在编译源代码时,由于受依赖库、编译器和运行平台影响较大,结合自己实际电脑编译时遇到的问题很多,而且处理起来相当棘手。关于编译的相关文档可以参考基于MinGW编译器实现的[3-4]和基于微软编译器实现的[5-6]。本文是一个基于Win7平台(win7-32,CPU为i686)和gcc编译器指导编译bitcoin 0.1.0的技术文档,详述了完成编译的步骤、细节、要点。这里选择bitcoin 0.1.0,是因为它是区块链的鼻祖,且相对较小(约2万行代码),方便学习,但是又不失区块链的本质。

“互联网+”时代的到来,为媒体行业打开了新局面,推动了媒体领域的改革进程,这使得传统媒体在发展中面临着更多的机遇,同时也迎来了极大的挑战。传统媒体面对着新媒体这个“野蛮人”,很多人扬言传统媒体最终会被新媒体所取代,这在客观上要求传统媒体必须要顺应时代发展的步伐,吸收、汲取、借鉴新媒体的优势,实现与新媒体的合作互动、资源共享,进而推动自身的健康稳定发展。

2 获取Bitcoin 0.1.0及相关软件资源

2.1 获取Bitcoin 0.1.0源代码

软件资源下载地址如表1所示。

(3)它支持以下两款编译器:MinGWgcc(v3.4.5)和Microsoft Visual C++6.0 SP6。

从地址1下载Bitcoin 0.1.0源代码。注意下载的资源里面缺少rc文件,可以从地址2下载Bitcoin 0.3.12版,并复制其rc文件(与Bitcoin 0.1.0版通用)。

世界上绝大多数发达国家如英国、美国、德国等早已将儿童阅读上升到国家战略高度[32](P112-116),也许正因如此,才造就了各国的繁荣稳定和经济社会的持续性发展。在已具备客观条件和能力的前提下,中国政府也应提供强有力的资源投入和政策保障以便有效地支持并促进图书馆未成年人服务工作。我国民众在这方面的欠缺和薄弱的现况,也提示我们应尽快将其提升为国家战略,以免贻误时代赋予的宝贵发展机会。同时推广未成年人阅读,加强图书馆未成年人服务工作本身能紧扣教育目标和各阶段培养方案,是缓解甚至是解决目前基础教育中学生负担愈发沉重,心理健康日益凸显等问题的对症良药。

Bitcoin 0.1.0资源包中的readme.txt文件为我们提供了以下信息。

(1)它是基于wxFormBuilder开发的图形用户界面程序。

(2)CodeBlocks不能安装在C:Program Files下,因为配置MSYS时,路径中不能有空格。

从图7可知,QAGOR路由的数据包传递率最差。例如,在Topology 16-19时,QAGOR路由的数据包传递率低至1.0%。这也说明,空洞对QAGOR路由的影响最大。相比QAGOR,MMSPEED路由利用回压机制能较好地处理路由空洞。尽管回压机制能处理路由空洞,但是相比DG-SHGR路由,MMSPEED路由的数据包传递率仍较低。

2) 抗DPPH自由基。准确吸取维生素C和纯化液各2 mL(二者浓度均为0.012 mg/mL)分别置于不同试管中,常温下每个试管中快速加入2 mL DPPH溶液振荡摇匀、密封、避光静止反应30 min,在517 nm处测其吸光度A1。3次重复。以溶解该样品的溶剂2 mL无水乙醇+2 mL DPPH溶液在相同条件下反应得到的溶液作为空白对照,测其吸光度A0,然后计算清除率。

(4)它需要以下4个依赖库:wxWidget,Berkeley DB,openSSL,Boost。

2.2 获取工具软件

(4)按照bitcoin 0.1.0提供的编译方法,通过设置编译参数可以在编译时裁剪掉不必要的例程。由于执行脚本文件时不能带超过9个参数,所以要修改脚本文件msmingw32.bat,将perl Configure mingw%1%2%3%4%5%6%7%8,修改为perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-camellia no-aes no-seed no-rsa no-dh。同时,除了修改msmingw32.bat脚本文件,添加rem注释外,还要修改enginese_gmp.c文件,将:#include修改为:

bitcoin 0.1.0提供的readme.txt中,上述命令没有使用第3个参数,这样会导致编译失败。

推荐通过安装codeblocks-17.12(内含mingw)的方式安装MinGW。除此之外,还需要一个类Unix环境提供相关工具(如sh工具),以及一个Perl工具,用于运行perl脚本产生openSSL的工程文件。

从三驾马车来看,投资依然是大连经济发展的主要推动力。2017年大连投资增长15.1%,而同期消费与出口增长为9.2%和8.5%。从产业结构上看,第二产业内部行业结构以重工业为主。2016年规模以上轻、重工业增加值比例为22.5:77.5,以石油化工、装备制造、船舶制造为代表的重化工业占比大,而轻工业占比较低。同时,传统产业占比依然较大,而新兴产业发育还显不足。在第三产业内部结构主要是以批发、零售和住宿餐饮业,交通运输、仓储和邮政业以及房地产业等传统服务业为主,新兴文化创意、科技服务、研发设计、金融等现代服务业发展仍显不足,特别是生产性服务业占比较低。

从地址3下载codeblocks-17.12mingw-setup.exe并安装;从地址4下载MSYS-1.0.11.exe并安装;从地址5下载ActivePerl-5.20.2MSWin32.msi并安装。

2.3 获取依赖库

wxWidgets是一个开源的跨平台C++构架库,它提供GUI,需要编译生成它的静态库。从地址6下载wxWidgets-2.8.12.tar.gz。

解压openssl-0.9.8h.tar.gz到c:openssl-0.9.8h;修改msmingw32.bat脚本文件,用rem注释掉所有if errorlevel 1 goto end;启动命令行窗口,并改变当前目录到cd C:openssl-0.9.8h;执行perl脚本文件,msmingw32.bat threads no-des,编译生成需要的库。

openSSL提供安全通信功能,需要编译生成静态库与动态库。从地址8下载penssl-0.9.8h。

从著作权的角度看,对非物质文化遗产的保护与知识产权制度的契合点存在于非物质文化遗产的特点。非物质文化遗产所具有的独创性和可复制性正切合了著作权所保护的客体,比如我们民间剪纸艺术作品,它是民间剪纸艺术家通过繁琐的体力和智力劳动所独家制造出的具有可复制性的智力成果。根据我国《著作权法》的规定,作品是指“文学、艺术和科学领域内具有独创性并能以某种有形形式复制的智力创造成果。”由此,作品应当是独创性的、可复制性的,并且是存在于文学、艺术和科学领域内的智力成果。民间剪纸艺术作品作为一种图案,具备作品所必须具有的要素,是我国著作权法的保护客体。

Boost是一个常用的C++库,只引用其头文件,不需要编译。从地址9下载boost_1_34_1。

3 编译操作要点与错误处理办法

3.1 安装开发工具MinGW+mSYS

安装codeblocks在C:CodeBlocks目录下,然后将C:CodeBlocksMinGWin写入path环境变量。安装MSYS在C盘根目录。安装最后会提示是否已安装minGW,选择y,并指定minGW路径为C:CodeBlocksMinGW。

《专利法》第25条第1款第(二)项和第(三)项分别规定了“智力活动的规则和方法”以及“疾病的诊断和治疗方法”不属于专利保护客体,但是两者被排除在专利保护范畴之外的立法本意有所不同。⑭ 尹新天著:《中国专利法详解》,知识产权出版社2011年版,第343-344页。前者是为了防止数学定理、物理定律、基础算法等人类智力活动的成果形成无边界的垄断,从而妨碍运用这些智力成果进行客观世界改造的技术创新无法得到合理的专利保护;而后者则是出于人道主义的考虑,不能限制医生采用何种方法来救治病人的自由。当人工智能技术被用于医疗领域形成新的解决方案时,在专利保护客体的问题上,可能同时面临这两方面的考验。

要点如下:

(1)先安装CodeBlocks,再安装MSYS。

(2)它使用的所有库都是跨平台的,不但可以运行在linux、Mac平台,还可运行于windows平台。

3.2 编译wxWidgets-2.8.12

用winRAR将wxWidgets-2.8.12.tar.gz解压到C:wxWidgets;启动命令行窗口,并改变当前目录到cd C:wxWidgetsuildmsw;运行工程文件命令mingw32-make-f makefile.gcc,完成编译。

要点如下:

如果下载的是3.0.0(或者3.0.1版)版本,执行mingw32-make命令时,需要加上参数CXXFLAGS="-std=gnu++11",或者修改参数文件C:wxWidgets3uildmswConfig.gcc中的CXXFLAGS项。如果不带上述参数,会出现编译错误,并给出错误提示,要求加上参数-std=c++11或者-std=gnu++11,而实际上使用参数-std=c++11是不行的。但是3.1.0版不需要上述参数。

3.3 编译Berkeley DB 4.8.30

解压到C:db;启动msys,并改变当前目录到cd C:dbuild_unix;运行shell脚本文件,生成工程文件sh../dist/configure--enable-mingw--enable-cxx--disable-replication;运行新生成的工程文件mingw32-make,完成编译。

要点如下:

通过上面的分析,《诗经》中的食谱可谓是一道亮丽的风景线,周代的食物烹饪方法、饮食结构等已经比较丰富了,也折射出了中国饮食有着渊远流长、博大精深的文明历史!

据了解,自2015年在管坝村开展定点“挂包帮”扶贫共工作以来,中国银行积极开展各项工作,深入开展“转走访”调研,切实掌握制约当地经济发展的瓶颈所在。2017年,为助力该村产业发展,推动当地贫困农户脱贫致富,中国银行向该村捐赠了5万元专项资金用于支持当地贫困农户发展黑山羊产业。今年,为了让该村辖属纸厂村民小组能有一个定期召开组织群众活动、集中处理村内事务、定期讨论、宣传重大事项的场所,中国银行决定向该村捐赠10万元专项资金援建该村纸厂村民活动广场,实现脱贫攻坚工作中“党建”和“扶贫”的双推进。

3.4 安装Perl解释器

安装ActivePerl在C:Perl目录下,然后将C:Perlin写入path环境变量。

3.5 编译openssl-0.9.8h

Berkeley DB是一个文件数据库,需要编译生成静态库。从地址7下载Berkeley DB 4.8.30。

综上所述,教育信息化背景下的小学数学教学,改变了教师传统的枯燥单一的教学手段,音频、视频、影视、动画等各种媒体形式的综合运用,激发了学生的学习兴趣,将枯燥的数学教育变得生动有趣;现代教育技术改变传统教学手段的同时,也促进了师生关系的改变,教师不再是教学的权威,学生成为教学的主体,实现了师生间的民主、平等的交流;信息技术的发展和交流平台的建立,使师生间的互动交流变得更加便捷、高效;体验,分享成为学习常态,探究性学习、研究性学习,有效提升了学习效率,实现了高效教学。

要点如下:

(1)脚本文件可以用VC++6.0或codeblock软件打开,因为换行符问题不能用记事本打开。

(2)在sys窗口,执行tar命令解压:tar-xvzf openssl-0.9.8h.tar.gz,或者直接用winRar或winZip解压也可以。

(3)按照openssl包中提供的编译方法(见C:openssl-0.9.8hINSTALL.W32文档),无论带或者不带no-asm参数,均出现编译错误并终止编译,得不到需要的库。

VC++的cl编译器与C++标准兼容性差,例如容易出现运算符重载方面的错误。虽然通过技术方法也可以解决[5-6],但是过程复杂。所以这里使用兼容性更好的gcc编译器。

#ifndef OPENSSL_NO_RSA

#include

#endif

这样修改后,虽然编译时会有错误,但是可以得到需要的静态库和动态库。

这一环节是学生第一次认识棱柱和棱锥.对于棱柱和棱锥,小学没有介绍.这里通过学生的观察,类比长方体的认识过程,或类比圆柱和圆锥的认知过程,得到棱柱和棱锥的外形特征,从而完善初中简单几何体的知识.在这一环节中,培养学生能够通过自觉的联系和推理,发现已有知识和未知知识之间的联系,从而对未知知识的探索和认识更加的深刻.

3.6 解压boost_1_34_1到c:oost

3.7 安装库文件

这里所谓的安装,就是参照bitcoin的makefile工程文件的内容,将需要的库文件(或整个子文件夹)复制到bitcoin 0.1.0源文件所在的目录,即bitcoin 0.1.0src;将C:wxWidgets-2.8.12include文件夹复制到 bitcoin 0.1.0srcwxWidgets目录下,将 C:wxWidgets-2.8.12libgcc_lib文件夹复制到bitcoin 0.1.0srcwxWidgetslib目录下;将C:dbuild_unix文件夹复制到bitcoin 0.1.0srcDB目录下;将c:openssl-0.9.8houtincopenssl复制到bitcoin 0.1.0srcopenSSLinclude;将c:openssl-0.9.8houtlibeay32.a复制到bitcoin 0.1.0srcopenSSLout文件夹下;将c:oostoost复制到bitcoin 0.1.0srcoost目录下;将C:openssl-0.9.8h目录下的libeay32.dll文件复制到bitcoin 0.1.0src(或者系统system32文件夹)。

要点如下:

如果编译的不是2.8.12版,则需要参照bitcoin的makefile文档,修改wxWidgetslibgcc_lib中部分静态库文件名。

3.8 编译bitcoin 0.1.0

在bitcoin 0.1.0src文件夹下新建obj文件夹,然后启动命令行窗口,进入到bitcoin 0.1.0src,执行mingw32-make命令,生成bitcoin.exe。

将MinGWinmingwm10.dll文件复制到bitcoin 0.1.0src(或者系统system32文件夹)。

物流信息技术通过对物流企业的各项业务流程的生产要素进行重新组合,进而实现高效的利用,在物流环节中有效的降低经营成本,获得更大的效益。同时能进一步将各种有效的数据变为商业智慧,给企业的运行提供更多有效的营运信息,进而强化企业的管理能力和经营能力。

这样就可以启动bitcoin.exe程序了。

4 结语

需要说明的是,以上只是完成了编译操作,使程序可以正常启动,但是要运行程序,实现挖矿及转账操作目前还不行,因为无法与其他节点建立连接。具体问题将在后续文章中解决。

猜你喜欢

编译器文件夹路由
Fast Folders,让你的文件夹四通八达
铁路数据网路由汇聚引发的路由迭代问题研究
基于相异编译器的安全计算机平台交叉编译环境设计
运行速度大突破华为《方舟编译器》详解
多点双向路由重发布潜在问题研究
一种基于虚拟分扇的簇间多跳路由算法
路由重分发时需要考虑的问题
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
不容忽视的空文件夹