【系列】EOS智能合约开发04 - 搭建本地运行环境
接上篇 : 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启动单节点测试网络
本文转自币乎-松果,商业转载请联系其作者