Building Gridcoin on CentOS 7
Disclaimer
Use this guide as a reference as it might be incomplete. Be familiar with the build process while following it.
Consider joining the Gricoin Community Slack channels "#development" and "#packaging" for clarifications.
Think before you run!
The CentOS Linux is a stable, predictable, manageable and reproducible platform derived from the sources of Red Hat Enterprise Linux (RHEL). Latest CentOS 7.x release is coming by default with GCC 4.8.5 and Boost C++ Libraries 1.53.
Release v4.0.4.0 of Gridcoin Research should be built using GCC 8.x and Boost C++ Libraries 1.69.
GNU Compiler Collection
GCC 8.x for CentOS 7.x comes as a Development Toolset from Software Collections.
# yum -y install centos-release-scl;
Install GCC version 8, C++ support for GCC version 8, header files and libraries for C++ development and a GNU make with all their dependencies.
# yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++;
# yum -y install devtoolset-8-make;
Switch to a shell with GCC 8 and verify version.
# scl enable devtoolset-8 -- bash;
# gcc -v;
[...]
gcc version 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)
Boost C++ Libraries
Install the C++ source libraries, cross platform build system for C++ projects and the Boost C++ headers and shared development libraries.
# wget https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz;
# tar -xzf boost_1_*;
# cd boost_1_*;
# ./bootstrap.sh --prefix=/opt/boost-1.69;
# ./b2 install --prefix=/opt/boost-1.69 --with=all;
# echo "/opt/boost-1.69/lib" > /etc/ld.so.conf.d/boost-1.69.conf;
# ldconfig;
Gridcoin Research Daemon
Build and install the Gridcoin Research from source configured with "--with-boost".
# ./autogen.sh;
# ./configure --without-gui --without-miniupnpc --with-incompatible-bdb --with-boost=/opt/boost-1.69 --disable-tests --disable-bench;
# make;
Print shared object dependencies.
# ldd ./src/gridcoinresearchd;
linux-vdso.so.1 => (0x00007ffd297fc000)
libcurl.so.4 => /lib64/libcurl.so.4 (0x00007fa733aa2000)
libboost_system.so.1.69.0 => /opt/boost-1.69/lib/libboost_system.so.1.69.0 (0x00007fa73389f000)
libboost_filesystem.so.1.69.0 => /opt/boost-1.69/lib/libboost_filesystem.so.1.69.0 (0x00007fa733673000)
libboost_iostreams.so.1.69.0 => /opt/boost-1.69/lib/libboost_iostreams.so.1.69.0 (0x00007fa733458000)
libboost_program_options.so.1.69.0 => /opt/boost-1.69/lib/libboost_program_options.so.1.69.0 (0x00007fa7331be000)
libboost_thread.so.1.69.0 => /opt/boost-1.69/lib/libboost_thread.so.1.69.0 (0x00007fa732f87000)
libboost_chrono.so.1.69.0 => /opt/boost-1.69/lib/libboost_chrono.so.1.69.0 (0x00007fa732d6b000)
libdb_cxx-5.3.so => /lib64/libdb_cxx-5.3.so (0x00007fa732988000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007fa732715000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fa7322b3000)
librt.so.1 => /lib64/librt.so.1 (0x00007fa7320ab000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fa731da3000)
libm.so.6 => /lib64/libm.so.6 (0x00007fa731aa1000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fa73188b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa73166e000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa7312a1000)
libidn.so.11 => /lib64/libidn.so.11 (0x00007fa73106e000)
libssh2.so.1 => /lib64/libssh2.so.1 (0x00007fa730e43000)
libssl3.so => /lib64/libssl3.so (0x00007fa730bf1000)
libsmime3.so => /lib64/libsmime3.so (0x00007fa7309ca000)
libnss3.so => /lib64/libnss3.so (0x00007fa73069c000)
libnssutil3.so => /lib64/libnssutil3.so (0x00007fa73046c000)
libplds4.so => /lib64/libplds4.so (0x00007fa730268000)
libplc4.so => /lib64/libplc4.so (0x00007fa730062000)
libnspr4.so => /lib64/libnspr4.so (0x00007fa72fe24000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fa72fc20000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fa72f9d2000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fa72f6e9000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fa72f4b6000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fa72f2b1000)
liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007fa72f0a2000)
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fa72ee4d000)
libz.so.1 => /lib64/libz.so.1 (0x00007fa72ec36000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fa72ea10000)
/lib64/ld-linux-x86-64.so.2 (0x0000559021d5f000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fa72e7ff000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fa72e5fb000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fa72e3e1000)
libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fa72e1c4000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fa72df9c000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fa72dd65000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fa72db03000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fa72d8ff000)