Building Steem with GCC 6.1 on Fedora 24

Words
251
Reading
2 min
Listen
Play
10y

I successfully compiled Steem from the master branch on Fedora 24 with GCC 6.1. There was a couple of gotchas to overcome, so I think this quick guide could be useful to users of Fedora and maybe other GNU/Linux distributions that have the latest GCC version. The guide is adapted from the Russian version that I posted earlier.

Penguin

You need to download and build Boost 1.60.0 first (Steem wouldn't compile with the latest Boost 1.61.0). After downloading boost_1_60_0.tar.bz2:

$ tar -xjf boost_1_60_0.tar.bz2
$ cd boost_1_60_0/

Now, Boost 1.60.0 is not compatible with GCC 6.1. To fix this I had to replace boost/multiprecision/cpp_int.hpp with this version:

$ curl 'https://raw.githubusercontent.com/boostorg/multiprecision/f9c8f9ec091ad232c0a291904f7839d665d098e0/include/boost/multiprecision/cpp_int.hpp' \
      > boost/multiprecision/cpp_int.hpp

Installing the dependencies needed to compile Boost:

$ sudo dnf builddep boost

Building and installing Boost:

$ ./bootstrap.sh --prefix="$HOME/opt/boost-1.60.0"
$ ./b2 install

Building Steem:

$ git clone --recursive https://github.com/steemit/steem.git
$ cd steem
$ cmake -DBOOST_ROOT="$HOME/opt/boost-1.60.0" \
      -DENABLE_CONTENT_PATCHING=OFF -DLOW_MEMORY_NODE=ON \
      -DCMAKE_BUILD_TYPE=Release .

While compiling I caught an error that I was able to fix by replacing the following line in libraries/fc/git_revision.cpp (I am using sharps instead of hashes here as otherwise Steemit parses it as a tag):

♯define FC_GIT_REVISION_UNIX_TIMESTAMP HEAD-HASH-NOTFOUND

with

♯define FC_GIT_REVISION_UNIX_TIMESTAMP 0

and restarting cmake.

After that everything compiled successfully, steemd could be found in programs/steemd/, cli_wallet — in programs/cli_wallet/.

If I understand it correctly, variables ENABLE_CONTENT_PATCHING=OFF and LOW_MEMORY_NODE=ON are supposed to reduce system resource usage by the node, yet steemd still requires quite a lot of memory. On my machine it uses 5 G while mining, of which 2.8 G is resident and 2.2 G is in swap.

Building Steem with GCC 6.1 on Fedora 24 | Ecency