最近EOS的话题很多,很多人都把它当做区块链3.0技术。在认真看完白皮书后,我对EOS有了一个大体的认识,接下来就是动手操作了,于是就开始搭建EOS的测试环境。
本文不是搭建EOS测试环境的教程,更多是记录自己在搭建EOS测试环境过程中遇到的一些问题,希望能对入门EOS的同学有帮助。
学习技术,最好是直接看EOS的官方文档,此外,也可以参考欧链发布的文档。
废话不多说,开始搭建EOS测试环境。
以下是我使用的开发环境:
操作系统:ubuntu 16.04 desktop 64位
起初,我按照EOS在GitHub上的官方文档,一步步开始编译
git clone https://github.com/eosio/eos --recursive
cd eos
./build.sh ubuntu
很不幸,自动安装失败了,于是接下来我按照官方的文档,手动安装。
EOS是使用C++14开发的,需要使用cmake进行编译,以下是EOS的依赖库:
Clang 4.0.0
CMake 3.5.1
Boost 1.64
OpenSSL
LLVM 4.0
secp256k1-zkp
binaryen
首先手动安装CMake 3.5.1, 然后按照官方文档陆续安装Clang 4.0.0、Boost 1.64、secp256k1-zkp、binaryen、LLVM 4.0
但是在编译LLVM和clang的时候,死活编不过去。
make -j4 install
以下是报错信息:
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
看报错信息,还以为是g++编译器,于是我各种查,查编译器版本、查依赖库文件和头文件,无果。
最后百度才知道,主要原因是内存不足,真坑!
这个问题可以通过加大内存或者临时使用交换分区来解决,以下是临时使用交换分区方法:
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
接下来编译就可以了
make -j4 install
如果是使用虚拟机,建议将虚拟机的CPU核和内存调高点,否则编译很慢。
接下来安装Doxygen和MongoDB,然后配置环境变量
echo "export WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config" >> ~/.bash_profile
再cmake,就不会有警告信息
cmake -DBINARYEN_BIN=~/binaryen/bin -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib ..
make -j4
make install
值得一提的是,官网没有最后的一步,这一步把eos的工具安装到系统目录中,执行这一步后在任何目录下都可以使用eos的工具。
接下来需要修改eosd的配置文件,直接把官网的内容,追加到config.ini,会有以下的报错:
一开始,我还以为是boost的问题,查了很久也没查到什么,最后试着先解决第二个异常,也就是注释掉前面的'enable-stale-production',没想到问题就解决了。
请注意,config.ini中的genesis-json需要配置成自己本地的路径。在这里,我的路径是
genesis-json = /home/can/eos/genesis.json
搞定了上面以后,运行eosd,就可以看到EOS的欢迎界面了