原文地址:https://eosio.github.io/eos/group__howtobuild.html
下面的内容会介绍如何获得软件,如何build,如何运行一个简单的测试网络。
设置 build/development 环境
本项目是用c++14写的,使用cmake作为构建(build) 系统。我们推荐最新版的c++工具链(比如clang 或gcc)和cmake。在写这片文档的时候,nathan用的是clang4.0.0 和cmake 3.8.0.
安装依赖
eos需要安装以下外部依赖:
- Boost 1.64
- OpenSSL
- LLVM 4.0
- secp256k1-zkp (Cryptonomex branch)
git clone https://github.com/cryptonomex/secp256k1-zkp.git
cd secp256k1-zkp
./autogen.sh
./configure
make
sudo make install
如何为wasm构建LLVM 和clang
默认情况下,LLVM和clang都没有包含wasm构建目标(build target),所以你必须自己构建。注意,下面的代码创建的llvm版本只能构建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,以及子模块(submodule)的一个或两个递归。最方便的方法是进行recursive clone:
git clone [https://github.com/eosio/eos](https://github.com/eosio/eos) —recursive
如果不使用—recursive
标签进行clone,那么可以在repo中运行下面的指令,取回/恢复子模块:
git submodule update --init —recursive
配置和构建
要进行in-source build,只需要在顶层文件夹运行cmake. 当然也支持out-of-source build。要重写clang的默认选项,可以把下面的标签添加到cmake指令中:
-DCMAKE_CXX_COMPILER=/path/to/c++ -DCMAKE_C_COMPILER=/path/to/cc
对于debug build,要添加-DCMAKE_BUILD_TYPE=Debug
.
成功运行cmake之后,只需运行 make,开始build。build之后,要运行测试套件,就在tests文件夹中运行chain_test
使用wasm编译器完成项目
使用WASM_LLVM_CONFIG环境变量找到我们最近的wasm编译器。要编译eos/contracts文件夹里的示例合约和各自的测试,这就是必须的。
git clone https://github.com/eosio/eos --recursive
mkdir -p eos/build && cd eos/build
export WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config
cmake ..
make -j4
如果你在eos.io软件上做开发,你需要在.bash_profile 文件里加上WASM_LLVM_CONFIG
创建并运行单节点测试网络
成功build了项目之后,eosd二进制文件就会出现在programs/eosd文件夹里。进入这个文件夹,运行eosd,可能会报错然后退出,如果没有,直接使用Ctrl-C退出。注意:eosd会创建一个名为data-dir的文件夹,这个文件夹包含了默认的配置(config.ini),以及其它的一些内部信息。你可以把--data-dir /path/to/data传到eosd,来修改这个默认的存储路径。
编辑config.ini文件,把下面的设置添加到默认的地方:
# Load the testnet genesis state, which creates some initial block producers with the default key
genesis-json = /path/to/eos/source/genesis.json
# Enable production on a stale chain, since a single-node test chain is pretty much always stale
enable-stale-production = true
# Enable block production with the testnet producers
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
# Load the block producer plugin, so we can produce blocks
plugin = eos::producer_plugin
现在,就可以运行eosd了,运行起来,就能看到它开始出块。目前,p2p代码还没完成,所以只能运行单节点测试网络,当p2p网络完成了,我们会更新文章,写一个如何创建一个多节点测试网络的示例。
学习到了
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit