【系列】EOS智能合约开发04 - 搭建本地运行环境

in #cn7 years ago (edited)

 

 接上篇 : EOS智能合约开发03 - 构建EOS 

 在上一篇中,成功构建了EOS。但是我发现,从github clone的最新代码,无法在build文件夹下,通过 make install 命令安装EOS。通过查阅资料发现,目前EOS的GitHub分支已经坏了,不适合新用户使用。需要check出一个更早的版本才能运行。 

使用正确版本的代码

 1、第一步仍然是通过git clone获得项目代码 

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

 2、check出之前的稳定版本 

cd eos
git checkout DAWN-2018-01-25

 最新的项目结构和DAWN-2018-01-25项目结构有一些不同。最新的项目结构: 

 

 01-25版的项目结构: 

 

 或者在clone时,直接使用如下命令:  

git clone https://github.com/EOSIO/eos.git -b DAWN-2018-01-25 --recursive

 自动构建的shell脚本(.sh文件)的名字,在早期版本中不一样:

  • 早期版:build.sh
  • 最新版:eosio_build.sh

使用脚本的命令:

  • 早期版:./build.sh ubuntu
  • 最新版:./eosio_build.sh

构建EOS

自动构建

自动构建使用如下命令:

./build.sh ubuntu

手动构建

如果自动构建失败,则需要手动构建,应该先安装好EOS所有依赖项,再进行构建。 

 以下是EOS依赖的库:

  • Clang 4.0.0
  • CMake 3.5.1
  • Boost 1.66
  • OpenSSL
  • LLVM 4.0
  • secp256k1-zkp (Cryptonomex branch)

附:手动安装依赖项的命令

1、安装开发工具集  

sudo apt-get update
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key
sudo apt-get install clang-4.0 lldb-4.0 libclang-4.0-dev cmake make 
sudo apt-get install libbz2-dev libssl-dev libgmp3-dev
sudo apt-get install autotools-dev build-essential 
sudo apt-get install libbz2-dev libicu-dev python-dev
sudo apt-get install autoconf libtool git mongodb

 2、 安装 Boost 1.66(C++库)  

cd ~
wget -c 'https://sourceforge.net/projects/boost/files/boost/1.66.0/boost_1_66_0.tar.bz2/download' -O boost_1.66.0.tar.bz2
tar xjf boost_1.66.0.tar.bz2
cd boost_1_66_0/
echo "export BOOST_ROOT=$HOME/boost_1_66_0" >> ~/.bash_profile
source ~/.bash_profile
./bootstrap.sh "--prefix=$BOOST_ROOT"
./b2 install
source ~/.bash_profile

 3、安装 mongo-cxx-driver (mongoDB C++驱动)  

cd ~
curl -LO https://github.com/mongodb/mongo-c-driver/releases/download/1.9.3/mongo-c-driver-1.9.3.tar.gz
tar xf mongo-c-driver-1.9.3.tar.gz
cd mongo-c-driver-1.9.3
./configure --enable-static --enable-ssl=openssl --disable-automatic-init-and-cleanup --prefix=/usr/local
make -j$( nproc )
sudo make install
git clone https://github.com/mongodb/mongo-cxx-driver.git --branch releases/stable --depth 1
cd mongo-cxx-driver/build
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j$( nproc )

 4、安装 secp256k1-zkp(椭圆曲线加密算法)  

cd ~
git clone https://github.com/cryptonomex/secp256k1-zkp.git
cd secp256k1-zkp
./autogen.sh
./configure
make
sudo make install

 5、构建 wasm-compiler(默认的LLVM和clang编译器没有包含WASM编译器的构建,需要自己构建) 

mkdir  ~/wasm-compiler
cd ~/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 ..
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=.. -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../
make -j4 install

 参考:EOS Wiki - Manual installation of the dependencies - Clean install Ubuntu 16.04 & Linux Mint 18

依赖项安装好后,主目录下会有这些项目: 

安装EOS

完成clone和构建(build)大概需要两小时。接下来,需要切换到build文件夹,安装EOS,执行命令如下:  

cd build
sudo make install

 安装好EOS后,会在build目录下生成install目录,该在目录的bin下有所有编译好的命令,包括eosd,eosc,eoscpp等。 

使用命令

接下来,切换到eosd文件夹,并运行./eosd命令:  

cd eosd
./eosd

 正常情况下,会得到一个错误消息,说找不到“genesis file”,就是缺少创始文件。但是在第一次运行eosd错误后,配置文件会被创建。 

 在目录:eos/build/programs/eosd/data-dir 中,会有一个config.ini文件。

修改配置


用编辑器中打开config.ini文件,在最后一行下方粘贴以下内容: 

genesis-json = genesis.json
producer-name = inita
producer-name = initb
producer-name = initc
producer-name = initd
producer-name = inite
producer-name = initf
producer-name = initg
producer-name = inith
producer-name = initi
producer-name = initj
producer-name = initk
producer-name = initl
producer-name = initm
producer-name = initn
producer-name = inito
producer-name = initp
producer-name = initq
producer-name = initr
producer-name = inits
producer-name = initt
producer-name = initu
plugin = eosio::producer_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin

 在config.ini中,找到“enable-stale-production”,把它设置为true,然后保存并关闭文件。
 

genesis.json

 在 eos/build目录中,找到genesis.json并复制,粘贴到 eos/build/programs/eosd/目录下。
 

再次运行eosd

 现在可以到 eos/build/programs/eosd/ 目录下,再次运行./eosd了: 

./eosd

 看到下面的图示时,表示我们成功运行了EOS区块链。 

 *******************************
*                                                            *
*       ------ NEW CHAIN ------       *
*       -      Welcome to EOS!      -       *
*       ---------------------------      *
*                                                            *
******************************** 

 下一篇:EOS智能合约开发05 - nodeos启动单节点测试网络 

本文转自币乎-松果,商业转载请联系其作者