EOS源码分析(1)安装

EOS源码分析(1)安装

attachments-2018-03-9MDlTgOS5aa74ab46b850.png

作者:尹成

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


目前EOS 项目主要支持两类系统,分别是Ubuntu 和 MacOS Sierra,本地的EOS安装,目前有三种形式,你可以根据自己的喜好进行选择。

- 下载安装包:从Dawn3.0 版本,项目直接提供了安装包,方便开发人员安装

- 通过自动化安装脚本安装:项目提供了自动安装脚本,脚本会安装所需要的依赖库,并编译EOS项目

- 手动安装:手动安装依赖库,并编译源代码。

## 下载安装包

从3.0 版本以后,EOS项目根据平台发布了可供直接下载安装的安装包,你可以通过[此链接](https://github.com/EOSIO/eos/releases)进行下载。目前最新的版本是3.0.1。

## 通过自动化脚本安装

针对于Ubuntu 16.10 和MacOS Sierra系统,EOS项目设置了自动化安装脚本,你可以通过此脚本自动安装项目所依赖的库并编译EOS代码。脚本放在EOS代码的根目录下,文件名称为eosio-build.sh,此脚本有两个参数,分别如下:

- architecture [ubuntu|darwin]

    此参数描述操作系统平台,目前只支持ubuntu 和mac 系统

- optional mode [full|build]

    如果参数为full,脚本会先下载所依赖的库,然后再进行编译。如果没有填写此参数,默认情况下是full


命令格式如下:

```./eosio-build.sh ```

完整的自动化脚本安装命令如下:

```

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

2) cd eos

3) ./eosio_build.sh ubuntu

```

以上代码具体解释如下:

- 第一行是从github 上Copy EOS代码到本地;

- 第二行代码进入到 EOS主目录;

- 第三行代码是切换到dawn-2.x 分支上;目前github 上主分支下是3.0 的代码,但是测试公网上是2.x 的代码,因此,如果你只是希望搭建一个本机版本,则无需切换到2.x分支,但如果是希望能够链接测试公网的话,需要切换到2.x 分支下。后续等测试公网上版本也全部切换到3.0 之后,就无需再执行这句代码了。

- 第四行代码是运行自动部署脚本。如果你本机是ubuntu 系统,则第一个参数是ubuntu,如果是在mac 上编译,则需要把此参数修改为darwin

## 手动安装

EOS 项目的主要开发语言是C++,采用的是C++14 标准,编译系统使用CMake,项目编译所需要的依赖库如下:

- Clang 4.0.0

- CMake 3.5.1

- Boost 1.64

- OpenSSL

- LLVM 4.0

- [secp256k1-zkp (Cryptonomex branch)](https://github.com/cryptonomex/secp256k1-zkp)

- [binaryen](https://github.com/WebAssembly/binaryen)

### Ubuntu 16.10 安装

安装开发工具包:

```

sudo apt-get update

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -

sudo apt-get install clang-4.0 lldb-4.0 libclang-4.0-dev cmake make \

libbz2-dev libssl-dev libgmp3-dev \

autotools-dev build-essential \

libbz2-dev libicu-dev python-dev \

autoconf libtool git

```

安装Boost 1.64

```

cd ~

wget -c 'https://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.bz2/download' -O boost_1.64.0.tar.bz2

tar xjf boost_1.64.0.tar.bz2

cd boost_1_64_0/

echo "export BOOST_ROOT=$HOME/opt/boost_1_64_0" >> ~/.bash_profile

source ~/.bash_profile

./bootstrap.sh "--prefix=$BOOST_ROOT"

./b2 install

source ~/.bash_profile

```

安装[secp256k1-zkp (Cryptonomex branch)](https://github.com/cryptonomex/secp256k1-zkp):

```

cd ~

git clone https://github.com/cryptonomex/secp256k1-zkp.git

cd secp256k1-zkp

./autogen.sh

./configure

make

sudo make install

```

安装WASM 编译器[binaryen](https://github.com/WebAssembly/binaryen):

```

cd ~

git clone https://github.com/WebAssembly/binaryen.git

cd ~/binaryen

git checkout tags/1.37.14

cmake . && make

```

把 BINARYEN_ROOT环境变量添加到 .bash_profile文件中:

```

echo "export BINARYEN_ROOT=~/binaryen" >> ~/.bash_profile

source ~/.bash_profile

```

默认情况下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代码编译](####EOS代码编译)了;

### MacOS Sierra 10.12.6 安装

Mac 上安装依赖库前需要安装另外两个软件:

- Brew

> 安装命令如下:

> ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

- 最新版本的 XCode

> 安装命令如下:

> xcode-select --install


安装依赖库:

```sh

brew update

brew install git automake libtool boost openssl llvm@4 gmp ninja gettext

brew link gettext --force

```

安装[secp256k1-zkp (Cryptonomex branch)](https://github.com/cryptonomex/secp256k1-zkp):

```sh

cd ~

git clone https://github.com/cryptonomex/secp256k1-zkp.git

cd secp256k1-zkp

./autogen.sh

./configure

make

sudo make install

```

安装 [binaryen v1.37.14](https://github.com/WebAssembly/binaryen):

```sh

cd ~

git clone https://github.com/WebAssembly/binaryen.git

cd ~/binaryen

git checkout tags/1.37.14

cmake . && make

```

把 BINARYEN_ROOT环境变量添加到 .bash_profile文件中:

```

echo "export BINARYEN_ROOT=~/binaryen" >> ~/.bash_profile

source ~/.bash_profile

```

默认情况下LLVM 和 Clang 是不支持WASM 编译的,可以通过以下命令编译支持版本:

```sh

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

```

添加环境变量 `WASM_LLVM_CONFIG` 和 `LLVM_DIR` 到 `.bash_profile`:

```sh

echo "export WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config" >> ~/.bash_profile

echo "export LLVM_DIR=/usr/local/Cellar/llvm/4.0.1/lib/cmake/llvm" >> ~/.bash_profile

source ~/.bash_profile

```

编译环境已经设置完毕,可以进行[EOS代码编译](####EOS代码编译)了;

### EOS代码编译

#### 下载项目代码

获取EOS 项目代码,命令如下:

```sh

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

```

如果调用以上命令是忘记输入 `--recursive` 参数的话,可以调用以下命令下载所有子模块代码:

```sh

git submodule update --init --recursive

```

#### 编译代码

在编译前,请确保 `WASM_LLVM_CONFIG` 环境变量已经设置了 WASM 编译器,智能合约的编辑需要用到此编辑器。完整的下载和编译命令如下:

```sh

cd ~

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

mkdir -p ~/eos/build && cd ~/eos/build

cmake -DBINARYEN_BIN=~/binaryen/bin -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib ..

make -j4

```

编译完成后,在 `~/eos/build/programs` 目录下,会生成以下几个执行文件:

- eosiod : 服务器端区块链节点组件,各EOS节点运行此程序,构建一个去中心化的服务网络

- eosioc : 客户端命令行程序,通过 RPC 连接 eosiod

- eosiowd : EOS 钱包

- eosio-launcher : 区块链节点网络的配置和部署

文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-kL1zBfXx5a7ffd0b78798.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论

作家榜 »

  1. 社区运营-小以 311 文章
  2. 社区运营-小链 214 文章
  3. 于中阳Mercina-zy 68 文章
  4. 涂晶 68 文章
  5. 吴寿鹤 36 文章
  6. 兄弟连区块链大牛 31 文章
  7. 李晓琼 30 文章
  8. John-smith 21 文章