Ok, after hours of works i finally compiled primeminer under windows!!! You may ask why I'm spending 3 hours in compiling it when there are already binaries there around...well there are two reasons, the first is that i don't trust binaries w/o source code and the second is performance.
Yes, performance!!! Compiling my own primeminer i got a 5% performance improvement (tnx to gmp optimizations)!!
Anyway any donation is welcome!! (I may be persuaded to create an automatic installer
)
AGgPQKp7YAau1zUZqf6Pxqr3dnqoEqyBCm
1. Prepare your build system.1.1
Install msys:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/downloadLeave default location (C:\MinGW)
move to C:\MinGW\bin and run mingw-get
Select "basic setup -> msys-base package"
and "All Packages -> msys-m4".
Then click on Installation -> Apply Changes.
1.2
Install Perl:http://downloads.activestate.com/ActivePerl/releases/5.18.1.1800/ActivePerl-5.18.1.1800-MSWin32-x86-64int-297570.msiRun installer and exclude Perl Script, PPM, documentation and examples if you don't need them for other purposes.
1.3
Install Python:http://www.python.org/ftp/python/3.3.2/python-3.3.2.amd64.msiLeave defaults values.
1.4
Install GCC from mingw-builds:
Download
http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-posix/dwarf/x32-4.8.1-release-posix-dwarf-rev5.7z/downloadThen unpack it in C: (you will obtain a C:\mingw32 folder)
1.5.
Ensure that mingw-builds, Perl and Python bin folders are set in your PATH environment variable.Open cmd and write
insert missing path using those commands (avoid those for wich path already exists)
SET PATH=%PATH%;"C:\Perl\site\bin"
SET PATH=%PATH%;"C:\Perl\bin"
SET PATH=%PATH%;"C:\mingw32\bin"
SET PATH=%PATH%;"C:\Pyton33"
2. Download, unpack and build required dependencies.Create a new folder: C:\deps\
All file downloaded in that session have to be placed there.
2.1 OpenSSL:
http://www.openssl.org/source/openssl-1.0.1c.tar.gzFrom a MinGw shell (C:\MinGW\msys\1.0\msys.bat), unpack the source archive with tar then configure and make:cd /c/deps/
tar xvfz openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
make
2.2 Berkeley DB:
http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gzFrom a MinGW shell unpack the source archive, configure, edit line 113 of db.h then make:cd /c/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
../dist/configure --disable-replication --enable-mingw --enable-cxx
after configuring make sure to edit your C:\deps\db-4.8.30.NC\build_unix\db.h by replacing line 113:
typedef pthread_t db_threadid_t;
with
typedef u_int32_t db_threadid_t;
Thanks to Icy, see:
https://bitcointalk.org/index.php?topic=45507.0now you can:
2.3 Boost:
http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz/downloadFrom a MinGW shell unpack the source archive, then bootstrap and compile from a Windows command prompt:cd /c/deps/
tar xvfz boost_1_54_0.tar.gz
Open a Windows command prompt (Start -> Run -> cmd.exe)
cd C:\deps\boost_1_54_0\
bootstrap.bat mingw
b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc stage
This will compile the required boost libraries and put them into the stage folder (C:\deps\boost_1_54_0\stage).
2.4 Miniupnpc:
http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.tar.gzFrom a MinGW shell unpack the source archive, then makecd /c/deps/
tar xvfz miniupnpc-1.8.tar.gz
Move to C:\deps\miniupnpc-1.8 folder, double click on mingw32make.bat.
2.5 GMP:
https://gmplib.org/download/gmp/gmp-5.1.2.tar.xzFrom a MinGW shell unpack the source archive, configure, make and installcd /c/deps/
tar xvfJ gmp-5.1.2.tar.xz
cd gmp-5.1.2
./configure --prefix=/c/deps/gmp/ --enable-cxx --with-gnu-ld
make
make install
3. Download Primecoin miner for beeeeer.org from git, compile leveldb then compile primeminer https://github.com/thbaumbach/primecoin/archive/master.zip (specific build version of that guide
here, rename that zip into master.zip)
Leveldb libraries will not compile automatically so we'll need to compile them first.3.1
Extract master.zip (for example to C:\) then start MinGW shell and change into leveldb folder:
cd /C/master/src/leveldb
TARGET_OS=NATIVE_WINDOWS make libleveldb.a libmemenv.a
3.2 Now with a texteditor edit BOOST_SUFFIX, INCLUDEPATHS and LIBPATHS in your C:\master\src\makefile.mingw according to your dependencies location and correct $(CURDIR) error:
BOOST_SUFFIX?=-mgw48-mt-s-1_54
INCLUDEPATHS= \
-I"$(CURDIR)" \
-I"c:/deps/boost_1_54_0" \
-I"C:/deps/db-4.8.30.NC/build_unix" \
-I"c:/deps/openssl-1.0.1c/include" \
-I"c:/deps/gmp/include"
LIBPATHS= \
-L"$(CURDIR)/leveldb" \
-L"c:/deps/boost_1_54_0/stage/lib" \
-L"C:/deps/db-4.8.30.NC/build_unix" \
-L"c:/deps/openssl-1.0.1c"
-L"c:/deps/gmp/lib"
If using a gcc version different from 4.8.x change appropriately
BOOST_SUFFIX?=-mgw##-mt-s-1_54
Then in the same file also add quotes as in the code
#
# LevelDB support
#
DEFS += $(addprefix -I,"$(CURDIR)/leveldb/include")
DEFS += $(addprefix -I,"$(CURDIR)/leveldb/helpers")
3.3 net.cpp will need to be patched in order to compile with gcc 4.8.1:
Fix invalid conversion error with MinGW 4.8.1 in net.cppOpen C:\master\src\net.cpp and edit those lines
search for
setsockopt(hListenSocket, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&nOne, sizeof(int));
and substitute with
#ifdef WIN32
setsockopt(hListenSocket, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&nOne, sizeof(int));
#else
setsockopt(hListenSocket, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&nOne, sizeof(int));
#endif
bug reference3.4 Compile everything and create your .exe
From a Windows command prompt run:
cd C:\master\src
mingw32-make -f makefile.mingw
strip primeminer.exe
The program is ready to be used!!
4. Launch the program and profit!primeminer -poolip=54.200.248.75 -poolport=1337 -pooluser=AGgPQKp7YAau1zUZqf6Pxqr3dnqoEqyBCm -poolpassword=PASSWORD -poolfee=1 -genproclimit=2
Obviously set it with your data!