C:\, the root directory on most Windows installations. If you choose to unpack to another location, the cd commands must be adjusted accordingly.Note: Skip this step if you already built OpenSSL in Step 2 of Install MMGen and Its Dependencies.
Grab the latest tarball from the openssl.org download page and unpack it. At the MSYS prompt, run:
$ cd /c/openssl-1.0.1f
$ ./config --openssldir=/usr
$ make
$ make install
Grab the v5.0 tarball, or browse the download page for other versions (avoid v4.8, which has issues with Windows; versions newer than 5.0 may work, but they're untested by the author). Unpack the archive and run the following at the MSYS prompt:
$ cd /c/db-5.0.32/build_unix
$ ../dist/configure --enable-mingw --enable-cxx --disable-replication --prefix=/usr
Open the source file db.h in your editor. Change the statement on line 116:
typedef pthread_t db_threadid_t;
to read:
typedef u_int32_t db_threadid_t;
Note: since db.h is created by configure, this must be done after
configure is run.
Save the file and run make and make install.
Get the file MASMsetup.exe from the Microsoft website. With a tool
like 7zip, open the cab file inside and the file inside it, which begins with
FL_ml_exe*. Copy this file to your path, renaming it to ml.exe.
Get the boost tarball from sourceforge and unpack it. At the DOS prompt, run:
cd \boost_1_55_0
boostrap.bat
bjam toolset=gcc link=static threading=single --build-type=minimal stage --with-system --with-filesystem --with-program_options --with-chrono --with-test
bjam toolset=gcc link=static threading=multi --build-type=minimal stage --with-thread
These commands build just the few libraries you need, avoiding the time-consuming process of compiling the whole boost package.
Download Sipa's watchonly bitcoind zip archive (commit #a13f1e8 [check])
from GitHub and unpack it. At the MSYS prompt, run:
$ cd /c/bitcoin-watchonly
Make the following edits to src/leveldb/Makefile:
After the the statement
include build_config.mk, add the following line:
SOURCES=$(shell echo db/*.cc util/*.cc table/*.cc)
Change the line:
LIBOBJECTS = $(SOURCES:.cc=.o)
to read:
LIBOBJECTS = $(SOURCES:.cc=.o) port/port_win.o
Change the line:
all: $(SHARED) $(LIBRARY)
to read:
all: $(LIBRARY)
Edit the following files,
src/rpcdump.cpp
src/rpcnet.cpp
src/rpcwallet.cpp
src/wallet.cpp
src/walletdb.cpp
adding the line #include <winsock2.h> near the top of each file, above
the first #include statement.
At the MSYS prompt, run the following commands (this needs to be done just once):
$ cp /mingw/bin/autoreconf-2.68 /mingw/bin/autoreconf
$ cp /mingw/bin/autoconf-2.68 /mingw/bin/autoconf
$ cp /mingw/bin/automake-1.11 /mingw/bin/automake
$ cp /mingw/bin/aclocal-1.11 /mingw/bin/aclocal
$ cp /bin/true.exe /bin/hexdump.exe
Generate the configure script:
$ sh autogen.sh
Edit the just-created configure script, adding the line:
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
after the line:
LIBS="$LIBS $BOOST_LIBS $BOOST_CHRONO_LIB"
From the prompt, run configure and make with the arguments provided below:
$ ./configure --without-qt --with-incompatible-bdb CPPFLAGS=-I/usr/include LDFLAGS="-static -L/usr/lib -Wl,--allow-multiple-definition" BOOST_ROOT=/c/boost_1_55_0
$ make src/bitcoind.exe
Strip the executable (strip src/bitcoind.exe), copy it to your path and test
that the command bitcoind works. You may want to use the -datadir option to
point to the planned location of your bitcoin.conf file, wallet and blockchain.
Of these files, the only one you need to create is bitcoind.conf. If this file
or its required user and password and lines are missing, bitcoind will exit
with an error message instructing you how to create it.