1 Installation on Microsoft Windows:
3 There are three ways to create binaries of this package for Microsoft Windows:
4 1) Native binaries, built using the mingw tool chain.
5 2) Native binaries, built using the MS Visual C/C++ tool chain.
6 3) Binaries for the Cygwin environment.
8 ===============================================================================
9 1) Native binaries, built using the mingw tool chain.
11 I recommend to use the Cygwin environment as the development environment
12 and mingw only as the target (runtime, deployment) environment.
13 For this, you need to install
14 * Cygwin (from https://cygwin.com/),
15 * some packages available from the Cygwin package installer:
17 * the mingw cross-compilation tools and runtime package, available from
18 the Cygwin package installer (setup-x86_64.exe):
19 - for creating 32-bit binaries: packages
20 mingw64-i686-gcc-core,
23 - for creating 64-bit binaries: packages
24 mingw64-x86_64-gcc-core,
25 mingw64-x86_64-headers,
26 mingw64-x86_64-runtime
28 Building 32-bit binaries for mingw is achieved through the following
29 preparation, configure, and build commands:
31 PATH=/usr/local/mingw32/bin:$PATH
33 ./configure --host=i686-w64-mingw32 --prefix=/usr/local/mingw32 \
34 CC=i686-w64-mingw32-gcc \
35 CPPFLAGS="-I/usr/local/mingw32/include -Wall" \
36 LDFLAGS="-L/usr/local/mingw32/lib"
40 Building 64-bit binaries for mingw is achieved through the following
41 preparation, configure, and build commands:
43 PATH=/usr/local/mingw64/bin:$PATH
45 ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/mingw64 \
46 CC=x86_64-w64-mingw32-gcc \
47 CPPFLAGS="-I/usr/local/mingw64/include -Wall" \
48 LDFLAGS="-L/usr/local/mingw64/lib"
56 ===============================================================================
57 2) Native binaries, built using the MS Visual C/C++ tool chain.
59 Note that binaries created with MSVC have a distribution constraint: They
60 depend on a closed-source library ('msvcr90.dll' for MSVC 9.0,
61 'vcruntime140.dll' for MSVC 14.0, and so on) which is not normally part of
62 a Windows installation.
63 You cannot distribute 'vcruntime*.dll' with the binaries - this would be a
64 violation of the GPL and of the Microsoft EULA.
65 You can distribute the binaries without including 'vcruntime*.dll'. Users
66 who don't have this library on their system will require to pull some files
67 (api-ms-win*.dll) through the Windows Update mechanism, see
68 https://support.microsoft.com/en-us/kb/2999226 .
70 This recipe requires MS Visual C/C++ 9.0 or newer.
71 You don't need the Visual Studio IDE, just the C/C++ tool chain.
72 As of 2016, you can install the MS Visual C/C++ 14.0 tool chain from
73 http://landinghub.visualstudio.com/visual-cpp-build-tools (it's the file
74 visualcppbuildtools_full.exe).
76 This recipe requires also a Cygwin environment (with 'bash', the common POSIX
77 commands, and 'make') as a build environment. Building with 'nmake' is not
79 For this, you need to install
80 * Cygwin (from https://cygwin.com/),
81 * some packages available from the Cygwin package installer:
84 You also need the scripts 'ar-lib' and 'compile' from
85 https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEAD
86 https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEAD
88 They may also be included in this package, in directory 'build-aux/'.
89 Save them; the instructions below assume that you stored them in $HOME/msvc/.
91 chmod a+x ar-lib compile
93 Start a bash (from Cygwin).
95 Make sure that the MSVC tools ("cl" etc.) are found in PATH and the
96 environment variables INCLUDE and LIB are set appropriately.
97 In a typical MSVC 9.0 installation, it can be achieved by running
98 C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
99 In a typical MSVC 14.0 installation on Windows 10, it can be achieved
100 - for creating 32-bit binaries: through the following bash commands:
102 # Set environment variables for using MSVC 14,
103 # for creating native 32-bit Windows executables.
105 # Windows C library headers and libraries.
106 WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
107 WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
108 INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
109 LIB="${WindowsCrtLibDir}x86;$LIB"
111 # Windows API headers and libraries.
112 WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
113 WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
114 INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
115 LIB="${WindowsSdkLibDir}x86;$LIB"
117 # Visual C++ tools, headers and libraries.
118 VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
119 VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
120 PATH=`cygpath -u "${VCINSTALLDIR}"`/bin:"$PATH"
121 INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
122 LIB="${VCINSTALLDIR}"'\lib;'"${LIB}"
126 - for creating 64-bit binaries: through the following bash commands:
128 # Set environment variables for using MSVC 14,
129 # for creating native 64-bit Windows executables.
131 # Windows C library headers and libraries.
132 WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
133 WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
134 INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
135 LIB="${WindowsCrtLibDir}x64;$LIB"
137 # Windows API headers and libraries.
138 WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
139 WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
140 INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
141 LIB="${WindowsSdkLibDir}x64;$LIB"
143 # Visual C++ tools, headers and libraries.
144 VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
145 VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
146 PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
147 INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
148 LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"
152 Building 32-bit binaries with MSVC is achieved through the following
153 preparation, configure, and build commands:
155 PATH=/usr/local/msvc32/bin:$PATH
158 win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
159 win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
160 win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
161 win32_target=_WIN32_WINNT_WIN8 # possibly for MSVC >= 10.0
163 ./configure --host=i686-w64-mingw32 --prefix=/usr/local/msvc32 \
164 CC="$HOME/msvc/compile cl -nologo" \
166 CXX="$HOME/msvc/compile cl -nologo" \
168 CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc32/include" \
169 LDFLAGS="-L/usr/local/msvc32/lib" \
171 NM="dumpbin -symbols" \
173 AR="$HOME/msvc/ar-lib lib" \
178 Building 64-bit binaries with MSVC is achieved through the following
179 preparation, configure, and build commands:
181 PATH=/usr/local/msvc64/bin:$PATH
184 win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
185 win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
186 win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
187 win32_target=_WIN32_WINNT_WIN8 # possibly for MSVC >= 10.0
189 ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \
190 CC="$HOME/msvc/compile cl -nologo" \
192 CXX="$HOME/msvc/compile cl -nologo" \
194 CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \
195 LDFLAGS="-L/usr/local/msvc64/lib" \
197 NM="dumpbin -symbols" \
199 AR="$HOME/msvc/ar-lib lib" \
208 ===============================================================================
209 3) Binaries for the Cygwin environment.
211 The generic instructions in the INSTALL file apply. But here are more
215 * Cygwin (from https://cygwin.com/),
216 * some packages available from the Cygwin package installer:
218 * the Cygwin [cross-]compilation tools package, available from
219 the Cygwin package installer (setup-x86_64.exe):
220 - for creating 32-bit binaries: packages
223 - for creating 64-bit binaries: packages
226 Building 32-bit binaries for Cygwin must be done in a directory *outside*
227 the Cygwin /home and /usr hierarchies. It is achieved through the following
228 preparation, configure, and build commands:
230 PATH=/usr/local/cygwin32/bin:/usr/i686-pc-cygwin/sys-root/usr/bin:$PATH
232 ./configure --host=i686-pc-cygwin --prefix=/usr/local/cygwin32 \
233 CC=i686-pc-cygwin-gcc \
234 CPPFLAGS="-I/usr/local/cygwin32/include -Wall" \
235 LDFLAGS="-L/usr/local/cygwin32/lib"
239 Building 64-bit binaries for Cygwin is achieved through the following
240 preparation, configure, and build commands:
242 PATH=/usr/local/cygwin64/bin:$PATH
244 ./configure --host=x86_64-pc-cygwin --prefix=/usr/local/cygwin64 \
245 CC=x86_64-pc-cygwin-gcc \
246 CPPFLAGS="-I/usr/local/cygwin64/include -Wall" \
247 LDFLAGS="-L/usr/local/cygwin64/lib"
255 ===============================================================================