目前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
命令格式如下:
完整的自动化脚本安装命令如下:
```
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 : 区块链节点网络的配置和部署