笔记:Centos7 编译Bitshares Core(full node)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@laozeng·
0.000 HBD
笔记:Centos7 编译Bitshares Core(full node)
## 前言
bitshares官方是在ubuntu环境下编译,Centos7编译过程大致相同,也遇到一些坑,本文以供参考。

---
## 编译
1、安装Boost_1_57_0版本
bitshares支持的Boost版本范围是:1.57- 1.65,太高或太低都不行。
```
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.tar.gz
tar -xf boost_1_57_0.tar.gz
cd boost_1_57_0
./bootstrap.sh
./b2
sudo cp -rf boost /usr/include
sudo cp -rf stage/lib/* /usr/lib64
```

2、安装依赖
```
yum install libzip-devel
yum install bzip2-devel
yum install libdbi-devel
yum install readline-devel
yum install autoconf
yum install libtool
yum install ntp
```

3、编译bitshares

```
git clone https://github.com/bitshares/bitshares-core.git

cd bitshares-core

git checkout <LATEST_RELEASE_TAG>
#查看最新版本https://github.com/bitshares/bitshares-core/releases, 如:git checkout 2.0.180202

git submodule update --init --recursive

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .

make

```

4、运行节点

```
 cd /root/bitshares/bitshares-core/programs/witness_node

./witness_node -d ./node_data  --partial-operations true --track-account '"1.2.786642"' --track-account '"1.2.514416"' --track-account '"1.2.749822"' --track-account '"1.2.749799"' --track-account '"1.2.691115"' --track-account '"1.2.664208"' --rpc-endpoint
# 注:--track-account '"1.2.786642”'只跟踪我们关心的账号,较少内存消耗
```

测试:
```
curl http://localhost:8090 -d '{"jsonrpc": "2.0", "method": "get_block", "params": [1], "id": 1}’
```

本地ws为:
```
ws://localhost:8090
```

---
##问题与解决

**问题1:**
> 致命错误:curl/curl.h:没有那个文件或目录

解决:

> yum install libcurl-devel

**问题2:**
> 没有规则可以创建“libraries/fc/tests/all_tests”需要的目标“/usr/lib64/openssl/libcrypto.so”。 停止。

解决:
cmake指定openssl库路径,只支持openssl 1.0.x,不支持更新的1.1.x
```
cmake -DOPENSSL_INCLUDE_DIR=/usr/lib64/ -DOPENSSL_SSL_LIBRARY=/usr/lib64/libssl.so -DOPENSSL_CRYPTO_LIBRARY=/usr/lib64/libcrypto.so .
```
其中libcrypto.so和libssl.so位置可通过find命令查找出来。


**问题3:**

>CMake Error at CMakeLists.txt:15 (message):
>  GCC version must be at least 4.8!

解决:
升级GCC
```
yum install centos-release-scl
yum install devtoolset-3-toolchain
scl enable devtoolset-3 bash
```

查看版本:
gcc —version

把 /usr/bin/c++, /usr/bin/cc替换为最新版本:
```
 cp /opt/rh/devtoolset-2/root/usr/bin/cc /usr/bin/cc
cp /usr/local/bin/c++ /usr/bin/c++
```

修改cmake编译器版本及默认路径:
打开文件bitshares/bitshares-core/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake
将以下内容
```
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/4.4.7;/usr/lib64;/lib64;/usr/lib”)
```
改为
```
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES " /usr/local/bin/;/usr/lib64;/lib64;/usr/lib”)
set(CMAKE_CXX_COMPILER_VERSION "4.8.5”)
```
👍 , , , , ,