EOS技术爱好者EOS区块链EOS技术学习笔记

CentOS 7下EOS编译

2018-01-30  本文已影响138人  海蓝德

临近EOS主网上线,为了尽快体验学习下一代区块链EOS的魅力,自己也要在测试环境中部署一个实例进行验证。目前在EOS Github的官网上已经有基于Ubuntu及MacOS的版本的部署指导及自动化脚本。

但实际研发人员用的环境还是比较多样化的,在生产集群中更多的用的是CentOS系统。由于编译环境差别比较大,走了不少弯路,今天记录一下怎么在一个纯净CentOS 7.4主机上编译EOS节点的过程以及我遇到的那些坑,以供后人绕行。

1. 硬件环境准备

由于需要源码编译LLVM WebAssembly,主机编译目录下至少需要有10GB空闲可用空间,内存不低于16 GB,CPU核数,越多越好。

2. 基本编译环境安装

根据EOS.IO的官网介绍,该项目主要是使用 C++14版本进行编译,而CentOS 7仓库中默认带的编译器版本是4.8.5,不支持该标准,同时CMake版本也较低,无法支持依赖库的编译,因此本次在开始编译前需要先安装相关新版的编译工具链及相关环境。

export BUILD_TEMP=${HOME}/tmp
mkdir ${BUILD_TEMP}

##GNU C++ 6.3.1
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-6

##CMake 3.10.2

export BUILD_TEMP=${HOME}/tmp
mkdir ${BUILD_TEMP}

cd  ${BUILD_TEMP}
mkdir ${HOME}/opt
curl -L https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz -o cmake-3.10.2-Linux-x86_64.tar.gz
tar -zxf cmake-3.10.2-Linux-x86_64.tar.gz -C ${HOME}/opt

export PATH=$PATH:/opt/rh/devtoolset-6/root/bin/:${HOME}/opt/cmake-3.10.2-Linux-x86_64/bin/

##Other compile tool chain
sudo yum install -y git autoconf automake libtool doxygen ocaml  gmp-devel python-devel bzip2-devel openssl-devel libicu-devel bzip2 wget

3. EOS依赖环境编译

根据官网描述,EOS.IO的主要第三方依赖环境如下

3.1. Boost编译

export BOOST_ROOT=${HOME}/opt/boost_1_64_0
cd  ${BUILD_TEMP}
curl -L https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2 > boost_1.64.0.tar.bz2
tar xvf boost_1.64.0.tar.bz2
cd boost_1_64_0/
./bootstrap.sh "--prefix=$BOOST_ROOT"
./b2 install

3.2. secp256k1-zkp编译

cd  ${BUILD_TEMP}
git clone https://github.com/cryptonomex/secp256k1-zkp.git
cd secp256k1-zkp
./autogen.sh && ./configure
make
sudo make install

3.3. Binaryen编译

cd  ${BUILD_TEMP}
git clone https://github.com/WebAssembly/binaryen
cd binaryen
git checkout tags/1.37.14
cmake . && make -j 4
sudo make install

3.4. LLVM WebAssembly+ Host Target

cd  ${BUILD_TEMP}

mkdir ${BUILD_TEMP}/wasm-compiler/build -p
cd ${BUILD_TEMP}/wasm-compiler
git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git
cd llvm/tools
git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git
cd ${BUILD_TEMP}/wasm-compiler/build
cmake -G "Unix Makefiles" -DLLVM_ENABLE_RTTI=ON -DLLVM_TARGETS_TO_BUILD='host' -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../llvm
sudo make -j4 install

export WASM_LLVM_CONFIG=/usr/local/bin/llvm-config

4. EOS编译

如果到这一步均顺利完成,现在可以编译EOS了

cd ${BUILD_TEMP}
git clone https://github.com/eosio/eos --recursive
mkdir -p ${BUILD_TEMP}/eos/build && cd ${BUILD_TEMP}/eos/build
cmake -DBOOST_INCLUDEDIR=${BOOST_ROOT}/include/boost \
-DBOOST_LIBRARYDIR=${BOOST_ROOT}/lib  ..
make -j4

5. 运行你的第一个EOS节点!

请参考官方文档Creating and launching a single-node testnet,我就不罗嗦了。


请打赏一个可怜的攻城狮,ETH捐助地址0x2255b6221479ED4d451914cA7acb2D01ee2ef101
上一篇下一篇

猜你喜欢

热点阅读