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环境就配置好了。