EOS

EOS开发环境搭建

EOS笔记

Posted by Liu Ke on September 13, 2018

v1.4.0

git clone

首先选择好想要存放的目录,然后使用如下git命令clone项目。

$ git clone https://github.com/eosio/eos --recursive

对于git clone--recursive选项,会自动初始化并更新仓库中的每一个子模块。递归克隆该项目下的所有项目。

build

克隆完成后,进入克隆的eos项目目录。eosio_build.sh这个shell脚本文件,可以帮我们直接安装好所有的依赖,并编译。EOS使用C++开发,CMake编译,依赖于Clang、CMake、Boost、OpenSSL、LLVM、secp256k1-zkp、MongoDB等。通过下面的命令执行这个文件。

$ cd eos
$ ./eosio_build.sh

编译成功后,会出现如下内容,说明build成功。编译过程根据机器性能,和缺少的依赖的多少,可能需要较长的时间。我编译了5个小时才编译成功。

可以按照提示内容,输入To verify your installation run the following commands下提示的命令测试来。这个测试如果不通过的话,暂时没有发现有什么问题。不进行测试的话,应该也没有什么问题。

配置问题

在编译时,eos官方要求机器至少有20G硬盘,8G内存。如果不满足要求,会报如下错误。

Your system must have 7 or more Gigabytes of physical memory installed.

解决方法:./eos/scripts目录下修改提示相对应的脚本,根据系统来修改对应的文件。我的是ubuntu,所以修改的是eosio_build_ubuntu.sh这个文件。

内存提示不足时,Your system must have 7 or more Gigabytes of physical memory installed,修改大概在第二十几行的如下代码:

	if [ "${MEM_MEG}" -lt 7000 ]; then
		printf "\\tYour system must have 7 or more Gigabytes of physical memory installed.\\n"
		printf "\\tExiting now.\\n"
		exit 1
	fi

7000改成比自己机器内存小的一个值,比如700等。也可以直接把这段代码注释掉。

硬盘提示不足时,You must have at least 20GB of available storage to install EOSIO,同理修改大概在第三十几行的如下代码:

	if [ "${DISK_AVAIL%.*}" -lt "${DISK_MIN}" ]; then
		printf "\\tYou must have at least %sGB of available storage to install EOSIO.\\n" "${DISK_MIN}"
		printf "\\tExiting now.\\n"
		exit 1
	fi

修改完成后,重新运行eosio_build.sh脚本。不过,尽管可以修改这些脚本然后进行编译,但是如果内存太低,在编译某些库的时候可能会因为内存耗尽而无法成功编译。

其他编译问题

Unable to download Boost libraries at this time

如果出现Unable to download Boost libraries at this time这个错误,是因为网络问题而导致部分依赖包下载超时。可以手动下载对应的包,然后放到脚本中指定的目录。下载链接同样在eosio_build_ubuntu.sh这个脚本中。需要注意的是,如果手动下载配置好相应的包之后,需要修改这个脚本,如果不修改,在编译的时候还会自动下载。

make:the ‘j’ option requires a positive integer argument

make: the ‘j’ option requires a positive integer argument
…
Compiling CMAKE has exited with the above error

对于make时候出现的’j’参数的问题,同样需要在eosio_build_ubuntu.sh这个脚本中,添加JOBS变量的值,机器是几核CPU,就添加JOBS的值为几。例如,对于双核机器:

#JOBS=$(( MEM_GIG > CPU_CORE ? CPU_CORE : MEM_GIG ))
JOBS=2

这个问题对于四核、六核机器,一般好像不会出问题。单核或者双核好像容易出现这个问题。

install

编译好之后,在eos目录下执行eosio_install.sh这个脚本。

$ ./eosio_install.sh

出现如下内容,说明安装成功:

启动单节点

./eos/build/programs/nodeos下,输入如下命令启动节点:

$ ./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

正常启动后,会有如下效果,开始出块并记录下来:

到此,本地eos环境就配置好了。


Fork me on GitHub