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成功。编译过程根据机器性能,和缺少的依赖的多少,可能需要较长的时间。我编译了2个小时才编译成功。
可以按照提示内容,输入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目录下修改提示相对应的脚本,根据系统来修改对应d的文件。我的是ubuntu,所以修改的是eosio_build_ubuntu.sh这个文件。
内存提示不足时,Your system must have 7 or more Gigabytes of physical memory installed,修改大概在第二十几行的如下代码:
if["${MEM_MEG}"-lt7000];then
printf"\\tYour system must have 7 or more Gigabytes of physical memory installed.\\n"printf"\\tExiting now.\\n"exit 1fi
将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 1fi
修改完成后,重新运行eosio_build.sh脚本。不过,尽管可以修改这些脚本然后进行编译,但是如果内存太低,在编译某些库的时候可能会因为内存耗尽而无法成功编译。
其他编译问题
Unable to download Boost libraries at this time
如果出现Unable to download Boost libraries at this time这个错误,是因为网络问题而导致部分依赖包下载超时。可以手动下载对应的包,然后放到指定的目录(手动下载可以参照https://bihu.com/article/179190)。下载链接同样在eosio_build_ubuntu.sh这个脚本中。需要注意的是,如果手动下载配置好相应的包之后,需要修改这个脚本,如果不修改,在编译的时候还会自动下载。
找不到WASM
No WASM compiler cound be found (make sure WASM_ROOT is set)
解决方法:
在~/opt/ 中创建wasm文件,我是直接找到一个成功的整个文件考入
install
编译好之后,在eos目录下执行eosio_install.sh这个脚本。
$ ./eosio_install.sh
出现如下内容,说明安装成功:
启动单节点
在./eos/build/programs/nodeos下,输入如下命令启动节点:
$ ./nodeos-e-peosio--plugineosio::chain_api_plugin--plugineosio::history_api_plugin
如果遇到 Block log was not setup properly with genesis information
解决方法:
在~/.local/share目录下删除工程目录(该目录重启会重新生成)
rm -rf eosio
然后在执行./nodeos-e-peosio--plugineosio::chain_api_plugin--plugineosio::history_api_plugin
正常启动后,会有如下效果,开始出块并记录下来:
到此,本地eos环境就配置好了。