
原文链接:https://steemit.com/eoskorea/@clayop/eos-build-guide-on-ubunbu
本文编译环境为Ubuntu 16.04 LTS(腾讯云),按原文编译会遇到Could NOT find GMP (missing: GMP_LIBRARIES GMP_INCLUDE_DIR)的问题,新增依赖libgmp3-dev后编译成功,下文命令已包含此依赖 ,我并没有在其他平台和系统上进行过测试。遇到任何问题,欢迎留言。
准备工作
screen -S compile # Optional
sudo -i # 获取 root
安装依赖
DEBIAN_FRONTEND=noninteractive apt-get install -y sudo wget net-tools ca-certificates unzip
echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main" >> /etc/apt/sources.list.d/llvm.list
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y git-core automake autoconf libtool build-essential pkg-config libtool \
mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev libssl-dev \
clang-4.0 lldb-4.0 lld-4.0 libgmp3-dev
rm -rf /var/lib/apt/lists/*
update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-4.0/bin/clang 400
update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-4.0/bin/clang++ 400
安装 cmake 3.9
cd /tmp
wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.sh
mkdir /opt/cmake && chmod +x /tmp/cmake-3.9.0-Linux-x86_64.sh
sh /tmp/cmake-3.9.0-Linux-x86_64.sh --prefix=/opt/cmake --skip-license
ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
安装 boost 1.64
cd /tmp && wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
tar zxf boost_1_64_0.tar.gz
cd boost_1_64_0
./bootstrap.sh --with-toolset=clang
./b2 -a -j$(nproc) stage release -sHAVE_ICU=1 --sICU_PATH=/usr
./b2 install --prefix=/usr
rm -rf /tmp/boost_1_64_0*
安装 secp256k1-zkp from cryptonomex repo
cd /tmp
git clone https://github.com/cryptonomex/secp256k1-zkp.git
cd secp256k1-zkp
./autogen.sh
./configure
make
make install
ldconfig
rm -rf /tmp/secp256k1-zkp*
安装 WASM compiler
cd /tmp && 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=/opt/wasm -DLLVM_TARGETS_TO_BUILD= \-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../
make -j$(nproc) install
rm -rf /tmp/wasm-compiler
Exit root
exit
安装 EOS
cd ~/
git clone https://github.com/EOSIO/eos.git --recursive
cd eos && mkdir build && cd build
WASM_LLVM_CONFIG=/opt/wasm/bin/llvm-config cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/opt/eos ..
make -j$(nproc)
sudo make install
sudo cp ./programs/eosd/eosd /usr/bin/eosd # Optional
sudo cp ./programs/eosc/eosc /usr/bin/eosc # Optional
cp ../genesis.json ~/ # Move genesis.json to your home directory
修改 config.ini
cd ~/
eosd # Ctrl+C after run to create config file
nano ./data-dir/config.ini
编辑config.ini,修改和添加下列代码
# 修改下列代码
genesis-json = "/home/USERNAME/genesis.json" # 修改USERNAME为你的用户名
enable-stale-production = true # 改成 true
增加下列代码
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 = eos::producer_plugin
plugin = eos::chain_api_plugin # 运行 eosc
运行 eosd
screen -S eosd
eosd
运行 eosc
eosc info
eosc 文档
https://eosio.github.io/eos/group__eosc.html
https://github.com/EOSIO/eos/issues/97
Note: Example contracts are located in ~/eos/contracts, for instance,
eosc setcode currency ./eos/contracts/currency/currency.wast ./eos/contracts/currency/currency.abi
一个合约实例 Here