前言
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”)