EOS原始碼分析(1)安裝
目前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 <architecture> <optional mode>```
完整的自動化指令碼安裝命令如下:
```
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 : 區塊鏈節點網路的配置和部署
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
相關文章
- EOS原始碼分析(2)EOS執行原始碼
- EOS原始碼分析(3)案例分析原始碼
- EOS原始碼分析(6)Token原始碼
- EOS原始碼分析(4)錢包原始碼
- EOS原始碼分析(5)賬號原始碼
- EOS原始碼分析(7)目錄結構原始碼
- Laravel-admin 原始碼分析系列 1——註冊服務與安裝分析Laravel原始碼
- 集合原始碼分析[1]-Collection 原始碼分析原始碼
- EOS原始碼學習系列原始碼
- 安裝EOS最新版
- open-ethereum-pool以太坊礦池原始碼分析(1)環境安裝原始碼
- Leveldb原始碼分析--1原始碼
- MYSQL原始碼分析1MySql原始碼
- LAMP原始碼安裝+wordpress安裝LAMP原始碼
- PackageInstaller 5.0原始碼分析靜默安裝與靜默解除安裝Package原始碼
- nginx原始碼安裝Nginx原始碼
- 原始碼安裝postgresql原始碼SQL
- 原始碼安裝openresty原始碼REST
- 原始碼安裝GO原始碼Go
- Nginx 原始碼安裝Nginx原始碼
- mysql原始碼安裝MySql原始碼
- zabbix原始碼安裝原始碼
- 原始碼安裝lamp原始碼LAMP
- 原始碼安裝MySQL原始碼MySql
- 原始碼安裝Nginx原始碼Nginx
- linux原始碼分析1Linux原始碼
- 【推薦 - 原始碼安裝】nginx - 安裝原始碼Nginx
- 原始碼分析系列1:HashMap原始碼分析(基於JDK1.8)原始碼HashMapJDK
- yum安裝與原始碼安裝比較原始碼
- MySQL 5.7.28 原始碼安裝MySql原始碼
- docker原始碼安裝NginxDocker原始碼Nginx
- macbook 原始碼安裝 redisMac原始碼Redis
- macbook 原始碼安裝 nginxMac原始碼Nginx
- Centos原始碼安裝NginxCentOS原始碼Nginx
- Redis 4.0原始碼安裝Redis原始碼
- mysql 5.1原始碼安裝MySql原始碼
- mysql-原始碼安裝MySql原始碼
- 原始碼安裝python原始碼Python