In continuing our crypto series with xmr-stak we update the old article How to compile xmr-stak (2.4.5) under CentOS 7 for CPU mining cryptocurrencies with the new version 2.5 and tested the build procedure with the old CentOS 6.
In crypto mining it is important to have latest version of the mining software, because crypto world is super dynamic with thousands crypto currency and tens of algos, which ever month might be changed and updated!
Thanks to xmr-stak we can have one application capable of mining many different cryptocurrencies based on different algorithms. XMR-STAK is GPU and CPU miner, here we present only the CPU ability. Here are the steps you should do to install (in fact install dependencies and compile the miner) and to begin CPU mining:
STEP 1) Update your system and install the following dependencies
Because xmr-stak need a newer version of GNU GCC than the CentOS ships with you must install GNU GCC 5.1 at least. Because the latest versions have better optimizations for the processors we use here GNU GCC 7 from Software Collection repository – more information for this repository here: How to install new gcc and development tools under CentOS 7
[root@srv ~]# yum update -y [root@srv ~]# yum install -y centos-release-scl epel-release [root@srv ~]# yum install -y cmake3 devtoolset-7-gcc* hwloc-devel libmicrohttpd-devel openssl openssl-devel make git screen
STEP 2) Compile the mining program xmr-stak
[root@srv ~]# scl enable devtoolset-7 bash [root@srv ~]# git clone https://github.com/fireice-uk/xmr-stak.git Initialized empty Git repository in /root/xmr-stak/.git/ remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 6002 (delta 0), reused 1 (delta 0), pack-reused 6001 Receiving objects: 100% (6002/6002), 1.86 MiB | 1.02 MiB/s, done. Resolving deltas: 100% (4283/4283), done. [root@srv ~]# mkdir xmr-stak/build [root@srv ~]# cd xmr-stak/build [root@srv build]# export CFLAGS="-O2 -march=native -msse3 -fomit-frame-pointer -pipe" [root@srv build]# export CHOST="x86_64-pc-linux-gnu" [root@srv build]# export CXXFLAGS="${CFLAGS}" [root@srv build]# export LDFLAGS="-Wl,-O1" [root@srv build]# cmake3 .. -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF -- The C compiler identification is GNU 7.3.1 -- The CXX compiler identification is GNU 7.3.1 -- Check for working C compiler: /opt/rh/devtoolset-7/root/usr/bin/cc -- Check for working C compiler: /opt/rh/devtoolset-7/root/usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /opt/rh/devtoolset-7/root/usr/bin/c++ -- Check for working CXX compiler: /opt/rh/devtoolset-7/root/usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for pthread_create -- Looking for pthread_create - not found -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.1e") -- The ASM compiler identification is GNU -- Found assembler: /opt/rh/devtoolset-7/root/usr/bin/cc -- Configuring done -- Generating done -- Build files have been written to: /root/xmr-stak/build [root@srv build]# make -j 8 Scanning dependencies of target xmr-stak-asm [ 3%] Building ASM object CMakeFiles/xmr-stak-asm.dir/xmrstak/backend/cpu/crypto/asm/cryptonight_v8_main_loop.S.o [ 6%] Linking C static library bin/libxmr-stak-asm.a [ 6%] Built target xmr-stak-asm Scanning dependencies of target xmr-stak-c [ 10%] Building C object CMakeFiles/xmr-stak-c.dir/xmrstak/backend/cpu/crypto/c_blake256.c.o [ 13%] Building C object CMakeFiles/xmr-stak-c.dir/xmrstak/backend/cpu/crypto/c_jh.c.o [ 20%] Building C object CMakeFiles/xmr-stak-c.dir/xmrstak/backend/cpu/crypto/c_keccak.c.o [ 20%] Building C object CMakeFiles/xmr-stak-c.dir/xmrstak/backend/cpu/crypto/c_groestl.c.o [ 24%] Building C object CMakeFiles/xmr-stak-c.dir/xmrstak/backend/cpu/crypto/c_skein.c.o [ 27%] Linking C static library bin/libxmr-stak-c.a [ 27%] Built target xmr-stak-c Scanning dependencies of target xmr-stak-backend [ 34%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/jconf.cpp.o [ 34%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/cpu/cpuType.cpp.o [ 37%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/cpu/jconf.cpp.o [ 44%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/version.cpp.o [ 44%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/cpu/hwlocMemory.cpp.o [ 55%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/cpu/minethd.cpp.o [ 55%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/backendConnector.cpp.o [ 55%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/globalStates.cpp.o [ 58%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/backend/cpu/crypto/cryptonight_common.cpp.o [ 62%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/http/httpd.cpp.o [ 65%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/http/webdesign.cpp.o [ 68%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/misc/console.cpp.o [ 72%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/misc/executor.cpp.o [ 75%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/misc/telemetry.cpp.o [ 79%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/misc/uac.cpp.o [ 82%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/misc/utility.cpp.o [ 86%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/net/jpsock.cpp.o [ 89%] Building CXX object CMakeFiles/xmr-stak-backend.dir/xmrstak/net/socket.cpp.o [ 93%] Linking CXX static library bin/libxmr-stak-backend.a [ 93%] Built target xmr-stak-backend Scanning dependencies of target xmr-stak [ 96%] Building CXX object CMakeFiles/xmr-stak.dir/xmrstak/cli/cli-miner.cpp.o [100%] Linking CXX executable bin/xmr-stak [100%] Built target xmr-stak
Execute the program to see if everything is OK. With the help output you can see how many algorithms are supported as of version 2.5 of xmr-stak:
[root@srv build]# cd bin [root@srv bin]# ./xmr-stak --help Usage: xmr-stak [OPTION]... -h, --help show this help -v, --version show version number -V, --version-long show long version number -c, --config FILE common miner configuration file -C, --poolconf FILE pool configuration file --benchmark BLOCKVERSION ONLY do a benchmark and exit --benchwait WAIT_SEC ... benchmark wait time --benchwork WORK_SEC ... benchmark work time --noCPU disable the CPU miner backend --cpu FILE CPU backend miner config file -i --httpd HTTP_PORT HTTP interface port The following options can be used for automatic start without a guided config, If config exists then this pool will be top priority. -o, --url URL pool url and port, e.g. pool.usxmrpool.com:3333 -O, --tls-url URL TLS pool url and port, e.g. pool.usxmrpool.com:10443 -u, --user USERNAME pool user name or wallet address -r, --rigid RIGID rig identifier for pool-side statistics (needs pool support) -p, --pass PASSWD pool password, in the most cases x or empty "" --use-nicehash the pool should run in nicehash mode --currency NAME currency to mine Supported coin options: - aeon7 - bbscoin - bittube - cryptonight - cryptonight_bittube2 - cryptonight_masari - cryptonight_haven - cryptonight_heavy - cryptonight_lite - cryptonight_lite_v7 - cryptonight_lite_v7_xor - cryptonight_v7 - cryptonight_v8 - cryptonight_v7_stellite - graft - haven - intense - masari - monero - qrl - ryo - stellite - turtlecoin Version: xmr-stak 2.5.2 752fd1e Brought to by fireice_uk and psychocrypt under GPLv3.