尝试编译EOS

之前一直没怎么去了解过EOS,除了偶尔看看各种新闻稿,总觉的EOS上线是遥不可及的事情,结果一转眼,EOS结束了众筹,主网上线都好多天了,于是想着该去了解一下啦。

系统要求和准备

单单看别人说这玩意如何如何感觉太凌乱,还是自己上手操作一下吧,那么就先从build开始。按照官方文档,写着的系统要求是:

  • 8GB 以上可用内存
  • 20GB以上可用空间

于是我就选个如下配置的VPS吧:

设置好VPS后,更新一下系统,然后在添加一个测试用户,就开工喽。

获取源代码

登陆测试用户,执行如下指令:

git clone https://github.com/EOS-Mainnet/eos.git --recursive
cd eos
git checkout mainnet-1.0.5
git submodule update --init --recursive

(一直搞不懂EOS-Mainnet和EOSIO上的EOS有啥区别,懒得细想啦)

执行自动编译脚本

相比于其它软件,EOS提供了一个自动编译脚本,支持以下几个主流的系统:

  • Amazon 2017.09 and higher
  • Centos 7
  • Fedora 25 and higher (Fedora 27 recommended)
  • Mint 18
  • Ubuntu 16.04 LTS (Ubuntu 16.10 recommended)
  • Ubuntu 18.04 LTS
  • MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended)

我们只需运行如下指令即可

./eosio_build.sh

编译过程

自动编译脚本通过运行类似如下语句来判断系统环境:

OS_NAME=$( cat /etc/os-release | grep ^NAME | cut -d'=' -f2 | sed 's/\"//gI' )

然后根据系统环境包含对应环境下的编译脚本,以我的系统Ubuntu 16.04.4 LTS为例,eosio_build.sh会将./scripts/eosio_build_ubuntu.sh包含进来。然后对内存(free)大小、CPU(lscpu)、磁盘空间(df)等进行对应的检查:

对于在下编译EOS,依赖于以下工具包:

DEP_ARRAY=(clang-4.0 lldb-4.0 libclang-4.0-dev cmake make automake libbz2-dev libssl-dev libgmp3-dev autotools-dev build-essential libicu-dev python2.7-dev python3-dev autoconf libtool curl zlib1g-dev doxygen graphviz)

脚本会对系统已安装的工具包进行判断(dpkg)

整理出缺少的工具包

提示安装

Do you wish to install these packages?
1) Yes
2) No

习惯性的敲了个Yes,然后却被提示如下信息:

Please type 1 for yes or 2 for no.

好吧,我瓦特了,原来这个是个选择题,不是填空题,输入1,当然要安装这些工具包啦,不然也没法玩,不是嘛。然后提示输入sudo 密码:

Installing dependencies
[sudo] password for xxxx:
xxxx is not in the sudoers file. This incident will be reported.

当初我看到很这个EOSIO github上的wiki页面,我就很好奇,也没说要求用root权限,也看到sudo之类的指令,那么那么gcc啊啥的是怎么装上的去呢?莫非能本地用户安装,执行了一遍./eosio_build.sh脚本,我就知道了,原来在这等着我呢!看来想破脑瓜不如去操作一遍啊。

然而我建的就是个普通用户,没赋给sudo权限,所以这块肯定就卡住了,将这个用户赋予了sudo权限后,重新执行,脚本自动完成了上述工具包的下载和安装。

之后编译和安装boost,这块没啥毛病,只是有一堆很壮观的警告信息(部分截图)

然后编译和安装MongoDB,这块再次需要用到sudo权限。

然后我就不理它了,休息去鸟。忙了一阵,才想起来我还在build EOS呢,回来一看,哇竟然完成了。

测试验证

按上边的提示信息,可以运行下列指令测试我们编译出来的东西是否正常

export PATH=${HOME}/opt/mongodb/bin:$PATH
/home/xxxx/opt/mongodb/bin/mongod -f /home/xxxx/opt/mongodb/mongod.conf &
cd /home/xxxx/eos/build; make test


之前的测试很快


后边的测试耗时有些就有些长了,不过好在编译的东西没啥问题。

好了,编译就学到这里啦,尽管依然一头雾水,不过可是慢慢学啦。

参考链接

H2
H3
H4
3 columns
2 columns
1 column
16 Comments