Windows mingw32 makefile and build notes (thanks m0mchil)

This commit is contained in:
Gavin Andresen 2011-02-18 09:49:00 -05:00
parent 930a07c3f5
commit e6e87891a9
2 changed files with 60 additions and 40 deletions

View File

@ -11,11 +11,14 @@ WINDOWS BUILD NOTES
Compilers Supported Compilers Supported
------------------- -------------------
MinGW GCC MinGW GCC http://tdm-gcc.tdragon.net/
http://tdm-gcc.tdragon.net/ has an easy installer. Go back a few versions TDM-GCC with gcc 4.5.1 was used to build this release.
for a little older gcc like gcc 4.4.?. MSYS 1.0.11 was also used (sh needed to compile some dependencies)
MSVC 10.0 (2010) was used to build this release.
Candidate releases were built with MSVC 10.0 (2010), but
compiling with Visual C++ caused rendering artifacts when
bitcoin was run.
Dependencies Dependencies
@ -23,10 +26,10 @@ Dependencies
Libraries you need to download separately and build: Libraries you need to download separately and build:
default path download default path download
wxWidgets \wxwidgets http://www.wxwidgets.org/downloads/ wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/
OpenSSL \openssl http://www.openssl.org/source/ OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/
Berkeley DB \db http://www.oracle.com/technology/software/products/berkeley-db/index.html Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html
Boost \boost http://www.boost.org/users/download/ Boost \boost-1.43.0-mgw http://www.boost.org/users/download/
Their licenses: Their licenses:
wxWidgets LGPL 2.1 with very liberal exceptions wxWidgets LGPL 2.1 with very liberal exceptions
@ -38,7 +41,7 @@ Versions used in this release:
wxWidgets 2.9.1 wxWidgets 2.9.1
OpenSSL 1.0.0c OpenSSL 1.0.0c
Berkeley DB 4.7.25.NC Berkeley DB 4.7.25.NC
Boost 1.45.0 Boost 1.43.0
Notes Notes
@ -47,33 +50,50 @@ The UI layout is edited with wxFormBuilder. The project file is
uiproject.fbp. It generates uibase.cpp and uibase.h, which define base uiproject.fbp. It generates uibase.cpp and uibase.h, which define base
classes that do the rote work of constructing all the UI elements. classes that do the rote work of constructing all the UI elements.
This release was built with a Visual C++ 10.0 toolchain (nmake); previous
releases were built using mingw.
wxWidgets wxWidgets
--------- ---------
cd \wxwidgets\build\msw DOS shell:
nmake -f makefile.vc SHARED=0 MONOLITHIC=1 BUILD=release UNICODE=1 CFB=Unicode cd \wxWidgets-2.9.1-mgw\build\msw
mingw32-make -f makefile.gcc
OpenSSL OpenSSL
------- -------
cd c:\openssl\src\openssl-1.0.0c MSYS shell:
perl Configure VC-WIN32 --prefix=c:/openssl un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377)
ms\do_ms.bat change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe'
nmake -f ms\nt.mak
nmake -f ms\nt.mak install cd /c/openssl-1.0.0c-mgw
./config
make
perl util/mkdef.pl 32 libeay enable-static-engine > libeay32.def
dllwrap --dllname libeay32.dll --output-lib libeay32.a --def libeay32.def libcrypto.a -lws2_32 -lgdi32
after that openssl libeay is in main source dir (openssl-1.0.0c-mgw)
Berkeley DB Berkeley DB
----------- -----------
Built in Visual C++ Express (project files had to be converted MSYS shell:
using Visual C++ Pro and then copied to build environment) cd /c/db-4.7.25.NC-mgw/build_unix
Compiled Release db_static project in Visual Studio Express. sh ../dist/configure --enable-mingw --enable-cxx
make
Boost Boost
----- -----
download bjam.exe from DOS prompt:
http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941 downloaded boost jam 3.1.18
cd \boost cd \boost-1.43.0-mgw
bjam toolset=msvc --build-type=complete stage bjam toolset=gcc --build-type=complete stage
Note:
building with boost 1.45.0 failed because of boost ticket 4614, 4258
builds fine with boost 1.43.0
Bitcoin
-------
DOS prompt:
cd \bitcoin
mingw32-make bitcoin.exe bitcoind.exe -f makefile.mingw
strip bitcoin.exe
strip bitcoind.exe

View File

@ -4,26 +4,26 @@
INCLUDEPATHS= \ INCLUDEPATHS= \
-I"/boost" \ -I"C:\boost-1.43.0-mgw" \
-I"/db/build_unix" \ -I"C:\db-4.7.25.NC-mgw\build_unix" \
-I"/openssl/include" \ -I"C:\openssl-1.0.0c-mgw\include" \
-I"/wxwidgets/lib/gcc_lib/mswud" \ -I"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib\mswud" \
-I"/wxwidgets/include" -I"C:\wxWidgets-2.9.1-mgw\include"
LIBPATHS= \ LIBPATHS= \
-L"/boost/stage/lib" \ -L"C:\boost-1.43.0-mgw\stage\lib" \
-L"/db/build_unix" \ -L"C:\db-4.7.25.NC-mgw\build_unix" \
-L"/openssl/out" \ -L"C:\openssl-1.0.0c-mgw" \
-L"/wxwidgets/lib/gcc_lib" -L"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib"
WXLIBS= \ WXLIBS= \
-l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd -l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd
LIBS= \ LIBS= \
-l libboost_system-mgw34-mt-d \ -l boost_system-mgw45-mt-s-1_43 \
-l libboost_filesystem-mgw34-mt-d \ -l boost_filesystem-mgw45-mt-s-1_43 \
-l libboost_program_options-mgw34-mt-d \ -l boost_program_options-mgw45-mt-s-1_43 \
-l libboost_thread-mgw34-mt-d \ -l boost_thread-mgw45-mt-s-1_43 \
-l db_cxx \ -l db_cxx \
-l eay32 \ -l eay32 \
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi