Here are some Linux compiling instructions for my high performance version of Primecoin. There are plenty of other guides out there but none of them seem to address all the issues. Now I'm writing my own guide. This should be the definitive guide on how to compile Primecoin on Linux. Commands need to be entered exactly as they appear, so copy and pasting is recommended.
Link to the main high performance thread:
https://bitcointalk.org/index.php?topic=255782.0Another guide written by eCoinomist is available here:
http://ecoinomist.com/xpm-primecoin-mining-guide-on-linuxPlease note that if you are new to Linux, it's best to stick with one guide. Mixing the instructions from different guides may produce errors later.
Tested with the following Linux distributions:
- Ubuntu 13.04
- CentOS 6.4
Step 1. Installing the required dependenciesUsing apt-get with latest Ubuntu 13.04:
sudo apt-get install -y build-essential m4 libssl-dev libdb++-dev libboost-all-dev libminiupnpc-dev
The 'sudo' command requires you to type the password for the current user. If you don't have sudo working, you need to manually switch to root with 'su' before running those commands.
Warning: If you have installed a specific version such as libdb5.3++-dev before, then don't install the meta-package libdb++-dev which may pull a different version.
Alternative for CentOS users:
su -c 'yum install gcc-c++ m4 openssl-devel db4-devel boost-devel'
Step 2. Compiling GMPLatest version supports all the new CPUs.
cd
rm -rf gmp-5.1.2.tar.bz2 gmp-5.1.2
wget http://mirrors.kernel.org/gnu/gmp/gmp-5.1.2.tar.bz2
tar xjvf gmp-5.1.2.tar.bz2
cd gmp-5.1.2
./configure --enable-cxx
make
sudo make install
The configure script will attempt to automatically detect the host CPU and enable the best optimizations for it.
Step 2b. Compiling OpenSSL (for CentOS and Fedora users)This step is only required if you're using CentOS. Red Hat has removed support for elliptic curve cryptography from the OpenSSL it supplies.
cd
rm -rf openssl-1.0.1e.tar.gz openssl-1.0.1e
wget ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/openssl-1.0.1e.tar.gz
tar xzvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config shared --prefix=/usr/local --libdir=lib
make
sudo make install
Step 2c. Compiling miniupnpc (for CentOS users)cd
rm -rf miniupnpc-1.6.20120509.tar.gz
wget http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.20120509.tar.gz
tar xzvf miniupnpc-1.6.20120509.tar.gz
cd miniupnpc-1.6.20120509
make
sudo INSTALLPREFIX=/usr/local make install
Step 3. Compiling primecoindcd
rm -rf primecoin-0.1.2-hp12.tar.bz2 primecoin-0.1.2-hp12
wget http://sourceforge.net/projects/primecoin-hp/files/0.1.2-hp12/primecoin-0.1.2-hp12.tar.bz2/download -O primecoin-0.1.2-hp12.tar.bz2
tar xjvf primecoin-0.1.2-hp12.tar.bz2
cd primecoin-0.1.2-hp12/src
cp makefile.unix makefile.my
sed -i -e 's/$(OPENSSL_INCLUDE_PATH))/$(OPENSSL_INCLUDE_PATH) \/usr\/local\/include)/' makefile.my
sed -i -e 's/$(OPENSSL_LIB_PATH))/$(OPENSSL_LIB_PATH) \/usr\/local\/lib)/' makefile.my
sed -i -e 's/$(LDHARDENING) $(LDFLAGS)/$(LDHARDENING) -Wl,-rpath,\/usr\/local\/lib $(LDFLAGS)/' makefile.my
make -f makefile.my
strip primecoind
sudo cp -f primecoind /usr/local/bin/
The last line will install the primecoind binary to /usr/local/bin.
CentOS users: Use the following 'make' command instead:
make -f makefile.my BOOST_LIB_SUFFIX=-mt
Step 4. ConfigurationCreate a configuration file:
cd
mkdir -p .primecoin
echo 'server=1
gen=1
rpcallowip=127.0.0.1
rpcuser=primecoinrpc
rpcpassword=SOME_SECURE_PASSWORD
sievesize=1000000' > .primecoin/primecoin.conf
sed -i -e "s/SOME_SECURE_PASSWORD/`< /dev/urandom tr -cd '[:alnum:]' | head -c32`/" .primecoin/primecoin.conf
You may optinally customize the configuration file. The last line puts a random password in the configuration file automatically, so you don't need to change anything if you're only sending RPC commands from localhost.
Type these commands to create an auto-restart script:
cd
echo '#!/bin/bash
export PATH="/usr/local/bin:$PATH"
killall --older-than 10s -q run-primecoind primecoind
function background_loop
while :; do
primecoind >/dev/null 2>&1
sleep 1
done
background_loop &' > run-primecoind
chmod +x run-primecoind
CentOS users may want to remove the 'killall' command from this script because the version that comes with CentOS does not support the --older-than option.
And for convenience, create a stopping script:
cd
echo '#!/bin/bash
killall -q run-primecoind
primecoind stop' > stop-primecoind
chmod +x stop-primecoind
Step 5. Starting miningSimply type the following to start mining:
It will take a while for it to sync up with the network. The script will continue running in the background, automatically restarting primecoind if it crashes.
Step 6. Monitoring the progressChecking that the primecoind process is runnning:
RPC commands can be sent to the daemon like this:
primecoind getprimespersec
primecoind listtransactions
primecoind getinfo
primecoind getmininginfo
primecoind getdifficulty
Any combination of these can be used with the 'watch' command like this:
watch 'primecoind getinfo && primecoind listtransactions'
Press Ctrl + C to terminate the watch command.
You can also look at the output in debug.log:
grep primemeter ~/.primecoin/debug.log
If you want to see those in real-time, try this:
tail -f ~/.primecoin/debug.log |grep primemeter
Step 7. Stopping miningRun the stop script: