1Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
2Contributed by the AriC and Caramel projects, INRIA.
3
4This file is part of the GNU MPFR Library.
5
6The GNU MPFR Library is free software; you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation; either version 3 of the License, or (at your
9option) any later version.
10
11The GNU MPFR Library is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
17along with the GNU MPFR Library; see the file COPYING.LESSER.  If not, see
18http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
1951 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
21
22
23                        Installing GNU MPFR
24                        ===================
25
26Note: In case of problem, please read this INSTALL file carefully before
27reporting a bug, in particular Section "In case of problem" below. Some
28problems are due to bad configuration on the user side (not specific to
29MPFR).
30
310. You first need to install GMP. See <http://www.gnu.org/software/gmp/>.
32   MPFR requires GMP version 4.1 or later.
33
341. Extract the files from the archive.
35
362. It is strongly advised to apply the latest patches if this has
37   not been done yet and if patches are available. You can check
38   on the release page:
39
40     http://www.mpfr.org/mpfr-3.1.2/
41
42   which may have additional information. The patches can be applied
43   with commands like:
44
45     wget http://www.mpfr.org/mpfr-3.1.2/allpatches
46     patch -N -Z -p1 < allpatches
47
48   or
49
50     curl http://www.mpfr.org/mpfr-3.1.2/allpatches | patch -N -Z -p1
51
52   (Those instructions are for the GNU patch command, for example
53   /usr/bin/gpatch on Solaris.)
54
553. In the MPFR directory, to detect your system, type:
56     ./configure
57   possibly with options (see below, in particular if this step or
58   one of the following fails). You should also check whether WARNING
59   lines have been output (such a problem may cause a failure in one
60   of the following steps).
61   Note: paths provided in configure options must always be absolute
62   (relative paths are not supported).
63
644. To build the library, type:
65     make
66
67   [optional] if you want to tune MPFR for your specific architecture, see
68   the section "Tuning MPFR" below. Note that for most common architectures,
69   MPFR includes some default tuning parameters which should be near from
70   optimal.
71
725. To check the built library (runs the test files), type:
73     make check
74
756. To install it (default "/usr/local" | see "--prefix" option), type:
76     make install
77
78If you installed MPFR (header and library) in directories that are
79not searched by default by the compiler and/or linking tools, then,
80like with other libraries, you may need to set up some environment
81variables such as C_INCLUDE_PATH (to find the header mpfr.h),
82LIBRARY_PATH (to find the library), and if the shared library has
83been installed, LD_LIBRARY_PATH (before execution) or LD_RUN_PATH
84(before linking); this list is not exhaustive and some environment
85variables may be specific to your system. "make install" gives some
86instructions; please read them. You can also find more information
87in the manuals of your compiler and linker. The MPFR FAQ may also
88give some information.
89
90Remember that if you have several MPFR (or GMP) versions installed
91(e.g., one with the system, and one, newer, by you), you will not
92necessarily get a compilation/linking error if a wrong library is
93used (e.g., because LD_LIBRARY_PATH has not been set correctly).
94But unexpected results may occur.
95
96Under Mac OS X, if the shared library was not installed and you use
97Apple's linker (this is the default), you will also need to provide
98the -search_paths_first linker flag ("-Wl,-search_paths_first" when
99you link via gcc) to make sure that the right library is selected,
100as by default, Apple's linker selects a shared library preferably,
101even when it is farther in the library paths. We recall that if a
102wrong library is selected due to this behavior, unexpected results
103may occur.
104
105
106Building the documentation
107==========================
108
109To build the documentation in various formats, you may first need to
110install recent versions of some utilities such as texinfo.
111
112* Type "make info" to produce the documentation in the info format.
113
114* Type "make pdf" to produce the documentation in the PDF format.
115
116* Type "make dvi" to produce the documentation in the DVI format.
117
118* Type "make ps" to produce the documentation in the Postscript format.
119
120* Type "make html" to produce the documentation in the HTML format
121  (in several pages); if you want only one output HTML file, then
122  type "makeinfo --html --no-split mpfr.texi" from the doc directory
123  instead.
124
125
126Building MPFR with internal GMP header files
127============================================
128
129MPFR built with internal GMP header files is a bit faster, so you may want
130to build it with them. Just do this in step 1:
131
132  ./configure --with-gmp-build=GMPBUILD
133
134where GMPBUILD is the GMP build directory. The needed header files are:
135gmp-impl.h, longlong.h and all the necessary headers to use them, which
136may be located either in the GMP source directory or in the GMP build
137directory, in case they are different (MPFR takes care of that, as of
138MPFR 3.1.0).
139
140Warning: the library obtained in this way may use some internal GMP
141symbols, and thus dynamically linking your software with a different
142version of GMP might fail, even though it is declared as compatible
143by Libtool's versioning system.
144
145
146Tuning MPFR
147===========
148
149For this, you need to build MPFR with a GMP build directory (see above).
150In the GMP build directory, you also need to go into the "tune" subdirectory
151and type "make speed". This will build the GMP speed library, which is used
152by the MPFR tuning mechanism.
153
154Then go back to the MPFR build directory, go into the "tune" subdirectory and
155type "make tune". This will build an optimized file "mparam.h" for your
156specific architecture.
157
158
159./configure options
160===================
161
162--prefix=DIR            installs MPFR headers and library in DIR/include and
163                        DIR/lib respectively (the default is "/usr/local").
164
165--with-gmp-include=DIR  assumes that DIR contains gmp.h
166--with-gmp-lib=DIR      assumes that DIR contains the GMP library
167--with-gmp=DIR          assumes that DIR is where you have installed GMP.
168                        same as --with-gmp-lib=DIR/lib
169                        and     --with-gmp-include=DIR/include
170                        (use either --with-gmp alone or one or both of
171                        --with-gmp-lib/--with-gmp-include)
172                        Warning! Do not use these options if you have
173                        CPPFLAGS and/or LDFLAGS containing a -I or -L
174                        option with a directory that contains a GMP
175                        header or library file, as these options just
176                        add -I and -L options to CPPFLAGS and LDFLAGS
177                        *after* the ones that are currently declared,
178                        so that DIR will have a lower precedence. Also,
179                        this may not work if DIR is a system directory
180                        (typically /usr or /usr/local); see below.
181
182--with-gmp-build=DIR    assumes that DIR contains the GMP build directory,
183                        and enables the use of GMP internals (see above).
184                        Warning! This option and the group of options
185                        --with-gmp are mutually exclusive.
186
187--enable-assert         build MPFR with assertions.
188
189--enable-thread-safe    build MPFR as thread safe, using compiler-level
190                        Thread Local Storage (TLS). Note: TLS support is
191                        roughly tested by configure. If configure detects
192                        that TLS does not work (because of the compiler,
193                        linker or system libraries), it will output an
194                        error message, telling you to build MPFR without
195                        thread safe. For instance, though Mac OS X uses
196                        GCC, it may not currently support GCC's __thread
197                        storage class.
198
199--disable-thread-safe   build MPFR without TLS. By default, TLS support
200                        is detected automatically, and MPFR is built as
201                        thread safe if supported. However this detection
202                        is only a heuristic: TLS can be detected as
203                        supported while its support is incomplete or
204                        buggy (MPFR tests may fail). In such a case,
205                        this option is useful.
206
207--enable-gmp-internals  allows the MPFR build to use GMP's undocumented
208                        functions (not from the public API). Note that
209                        library versioning is not guaranteed to work if
210                        this option is used. Thus it must not be used in
211                        binary distributions.
212
213Note: By default, the configure script tries to set CC/CFLAGS to GMP's
214ones (this feature needs GMP 4.3.0 or later, or the --with-gmp-build
215option). However this is not guaranteed to work as the configure script
216does some compiler tests earlier, and the change may be too late. Also,
217the values obtained from GMP may be incorrect if GMP has been built
218on a different machine. In such a case, the user may need to specify
219CC/CFLAGS as explained below.
220
221Run "./configure --help" to see the other options (autoconf default options).
222
223
224If 'gmp.h' and 'libgmp' do not match
225====================================
226
227Under some circumstances, the configure script may output a message
228saying:
229
230  'gmp.h' and 'libgmp' seem to have different versions or
231  we cannot run a program linked with GMP (if you cannot
232  see the version numbers above). [...]
233
234Even though the configure script does not fail in such a case, this
235message most often indicates a real error, which needs to be avoided.
236Possible causes are:
237
238* The wanted GMP library does not have the same ABI as the one chosen
239  to build MPFR. The consequences may be:
240
241    - A different GMP library (with the correct ABI) has been found,
242      but does not have the same version as 'gmp.h'.
243
244    - No other GMP libraries have been found (in this case, no version
245      numbers should be printed above the warning message).
246
247  This is incorrect and one of the following steps (make, make check)
248  will probably fail. GMP (actually gmp.h) now provides CC and CFLAGS
249  information to select the correct ABI, so that this problem should
250  no longer occur; but if GMP was provided by a binary package, such
251  information may not be valid. See the
252
253    checking for CC and CFLAGS in gmp.h...
254
255  line in the configure output (about the 11th line) and the following
256  few ones for more information. You may need to reinstall GMP or to
257  provide your own CC and/or CFLAGS. See also the remaining of this
258  INSTALL file.
259
260* A configure option like --with-gmp or --with-gmp-include was used
261  with a system include directory, e.g. one of the following:
262
263    --with-gmp=/usr
264    --with-gmp=/usr/local
265    --with-gmp-include=/usr/include
266    --with-gmp-include=/usr/local/include
267
268  GCC (and possibly other compilers) will ignore such a directive for
269  include directories (but this rule is not applied for the library
270  itself!). This means that the library search paths will be reordered
271  as declared, but the specified include directory will still be near
272  the end of the include search paths (thus with a low precedence).
273  This is not a problem if only one GMP version is installed, but
274  otherwise, a wrong gmp.h may be chosen, so that the versions of
275  gmp.h and libgmp may not match. The suggestions are the following:
276
277    - If you want to use the GMP version under /usr, then you should
278      uninstall all the other GMP versions (header and library files)
279      that may be seen in the search paths, in particular those under
280      /usr/local.
281
282    - If you want to use the GMP version under /usr/local, then you
283      should uninstall all the other GMP versions (header and library
284      files) that may be seen in the search paths, but *NOT* the one
285      under /usr (the version under /usr is provided by the OS vendor,
286      and changing/removing anything related to it may break your
287      system, and /usr should have a lower precedence than /usr/local
288      anyway).
289
290  To find where GMP versions have been installed:
291
292    $ locate libgmp  (if you have a locate database)
293
294  and if the compiler is GCC:
295
296    $ gcc -print-file-name=libgmp.so     (under most systems)
297    $ gcc -print-file-name=libgmp.dylib  (under Mac OS X)
298
299  and if this does not work, you may try:
300
301    $ gcc -print-search-dirs
302
303* An official GCC version was used under Debian GNU/Linux. Problems
304  may come from the fact that Debian chose a different convention
305  for library search paths concerning 32-bit and 64-bit libraries.
306  A possible problem can be, for instance:
307
308  [Debian's GCC, correct library path]
309  $ gcc -print-file-name=libgmp.so
310  /home/vlefevre/gmp/athlon64/lib/../lib/libgmp.so
311
312  [Official GCC, incorrect library path]
313  $ gcc-4.3.1 -print-file-name=libgmp.so
314  /usr/lib/../lib64/libgmp.so
315
316  The solution: use a GCC provided by Debian or add symbolic links
317  such as lib64 -> lib (on 64-bit machines) for your library paths.
318
319* The problem may also be temporary and only due to the fact that
320  libtool could not be used at this time. This is unlikely, though.
321
322
323In case of problem
324==================
325
326First, look for any warning message in the configure output.
327
328Several documents may help you to solve the problem:
329  * this INSTALL file, in particular information given below;
330  * the FAQ (either the FAQ.html file distributed with MPFR, or the
331    on-line version <http://www.mpfr.org/faq.html>, which may be more
332    up-to-date);
333  * the MPFR web page for this version <http://www.mpfr.org/mpfr-3.1.2/>,
334    which lists bugs found in this version and provides some patches.
335
336If the "configure" fails, please check that the C compiler and its
337options are the same as those for the GMP build (specially the ABI).
338You can see the latter with the following command:
339
340  grep "^CC\|^CFLAGS" GMPBUILD/Makefile
341
342if the GMP build directory is available. Then type:
343
344  ./configure <configure options> CC=<C compiler> CFLAGS="<compiler options>"
345
346(quotes are needed when there are spaces or other special characters
347in the CC/CFLAGS value) and continue the install. On some platforms,
348you should provide further options to match those used by GMP, or set
349some environment variables. For instance, see the "Notes on AIX/PowerPC"
350section below.
351
352Warning! Do NOT use optimization options that can change the semantics
353of math operations, such as GCC's -ffast-math or Sun CC's -fast.
354Otherwise conversions from/to double's may be incorrect on infinities,
355NaN's and signed zeros. Since native FP arithmetic is used in a few
356places only, such options would not make MPFR faster anyway.
357
358If some "make check" tests fail, you can try the --disable-thread-safe
359configure option (see the configure options above): it has been reported
360that some platforms have buggy TLS support. Before trying this option,
361you may want to check in the configure output whether MPFR was built
362with TLS support; if yes, you will have a line:
363  checking for TLS support... yes
364Alternatively "grep MPFR_USE_THREAD_SAFE config.log" will show that
365MPFR_USE_THREAD_SAFE is defined to 1. If it is "no" (or the variable
366is not defined), the --disable-thread-safe option would be useless.
367
368Some tests failure may be due to other compiler bugs, in particular
369in optimization code. You can try to build MPFR without compiler
370optimizations by giving -O0 (letter O, digit 0) in CFLAGS. If the
371MPFR tests no longer fail, this was probably due to a compiler bug,
372though we cannot exclude a bug in MPFR. You may want to contact us
373(see below), possibly after looking at:
374  http://www.loria.fr/~zimmerma/software/compilerbugs.html
375
376On some platforms, try with "gmake" (GNU make) instead of "make".
377Problems have been reported with the Tru64 make.
378
379If the configure script reports that gmp.h version and libgmp version
380are different, or if the build was OK, but the tests failed to link
381with GMP or gave an error like
382
383  undefined reference to `__gmp_get_memory_functions'
384
385meaning that the GMP library was not found or a wrong GMP library was
386selected by the linker, then your library search paths are probably
387not correctly set (some paths are missing or they are specified in an
388incorrect order).
389
390Such problems commonly occur under some GNU/Linux machines, where the
391default header and library search paths may be inconsistent: GCC is
392configured to search /usr/local/include and /usr/local/lib by default,
393while the dynamic linker ignores /usr/local/lib. If you have a GMP
394version installed in /usr (provided by the OS vendor) and a new one
395installed in /usr/local, then the header of the new GMP version and
396the library of the old GMP version will be used! The best solution
397is to make sure that the dynamic linker configuration is consistent
398with GCC's behavior, for instance by having /usr/local/lib in
399/etc/ld.so.conf or in some file from /etc/ld.so.conf.d (as Debian
400did: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395177). See
401also http://gcc.gnu.org/ml/gcc-help/2010-01/msg00171.html for more
402information. Alternatively you can use:
403  * environment variables. This may sometimes be necessary. If DIR
404    is the installation directory of GMP, add DIR/include to your
405    CPATH or C_INCLUDE_PATH (for compilers other than GCC, please
406    check the manual of your compiler), and add DIR/lib to your
407    LIBRARY_PATH and LD_LIBRARY_PATH (and/or LD_RUN_PATH);
408  * --with-gmp* configure options (described above), e.g.
409    --with-gmp=/opt/local (to use /opt/local/include for headers and
410    /opt/local/lib for libraries), but other software that uses GMP
411    and/or MPFR will need correct paths too, and environment variables
412    allow one to set such search paths in a global way.
413    Note about "--with-gmp=/usr/local". This option may appear to
414    solve the above inconsistency problem, but does not work as you
415    expect. Indeed it affects the library search path, in particular,
416    the one used by the dynamic linker (thus adding the missing
417    /usr/local/lib directory as wanted), but since /usr/local/include
418    is a "standard system include directory" for GCC, the include
419    search patch is not changed; this is often not a problem in this
420    particular case because usually, /usr/local/include is already
421    last in the include search patch, but this may fail under some
422    occasions and may trigger obscure errors.
423
424For instance, under Unix, where paths are separated by a colon:
425
426  * With POSIX sh-compatible shells (e.g. sh, ksh, bash, zsh):
427    export C_INCLUDE_PATH="/usr/local/include:/other/path/include"
428    export LIBRARY_PATH="/usr/local/lib:/other/path/lib"
429    export LD_LIBRARY_PATH="$LIBRARY_PATH"
430
431  * With csh or tcsh:
432    setenv C_INCLUDE_PATH "/usr/local/include:/other/path/include"
433    setenv LIBRARY_PATH "/usr/local/lib:/other/path/lib"
434    setenv LD_LIBRARY_PATH "$LIBRARY_PATH"
435
436If you can't solve your problem, you should contact us via the MPFR
437mailing-list <mpfr@inria.fr>, indicating the machine and operating system
438used (uname -a), the compiler and version used (gcc -v if you use gcc),
439the configure options used if any (including variables such as CC and
440CFLAGS), the version of GMP and MPFR used, and a description of the
441problem encountered. Please send us also the log of the "configure"
442(config.log).
443
444Note that even if you can build MPFR with a C++ compiler, you can't run
445the test suite: C and C++ are not the same language! You should use a C
446compiler instead.
447
448
449Notes about ABI
450===============
451
452On 64-bit computers, it may happen that the default ABI (Application Binary
453Interface) chosen by MPFR does not correspond to the default one chosen by
454the compiler.
455
456In particular, this kind of message may indicate the problem:
457/usr/bin/ld: skipping incompatible mpfr/src/.libs/libmpfr.a when searching for -lmpfr
458
459In fact, since MPFR relies on GMP, it uses the same ABI as GMP.
460To be sure that your program compiles and links correctly, use the same
461compiler flags as MPFR does (look for CFLAGS in config.log).
462
463You might also recompile GMP with a different ABI, with for example
464./configure ABI=32.
465
466
467Notes on Mac OS X
468=================
469
470If you get an error of the form
471
472  ld: pointer in read-only segment not allowed in slidable image...
473
474this can mean that the link is done against a static (GMP) library.
475In such a case, you should configure MPFR with --disable-shared to
476disable the build of the shared library.
477
478
479Notes on FreeBSD 4.3
480====================
481
482FreeBSD 4.3 is provided with an incorrect <float.h> header file, and
483MPFR tests related to long double's may fail. If you cannot upgrade
484the system, you can still use MPFR with FreeBSD 4.3, but you should
485not use conversions with the long double type.
486
487
488Notes on AIX/PowerPC
489====================
490
491The following has been tested on AIX 5.3 (powerpc-ibm-aix5.3.0.0) with
492gcc 3.3.2 and GMP 4.2.1.
493
494If GMP was built with the 64-bit ABI, before building and testing MPFR,
495you should set the OBJECT_MODE environment variable to 64, e.g., with:
496
497  export OBJECT_MODE=64
498
499(in a sh-compatible shell). But you should also provide a correct CFLAGS
500value to the "configure" script: using --with-gmp-build is not sufficient
501due to the early compiler tests, as gcc will not compile any program if
502OBJECT_MODE is 64 and the -maix64 option is not provided.
503
504
505MPFR for use with 32-bit Windows Applications (win32)
506=====================================================
507
508There are several ways of building MPFR on Windows, the most appropriate
509approach depending on how you intend to use the resulting libraries.
510
511a. Using MinGW
512==============
513
5141 - We advise to use MinGW (http://www.mingw.org/), which is simpler and
515    less demanding than Cygwin. Contrary to Cygwin, it also provides native
516    Windows code.
517
5182 - If you just want to make a binary with gcc, there is nothing to do:
519    GMP, MPFR and the program compile exactly as under Linux.
520    But if you want to generate a library for MinGW from a Cygwin
521    environment, you may need the -mno-cygwin gcc option (otherwise
522    a typical error is _P_WAIT being undeclared).
523
5243 - If you want to make libraries work under another Windows compiler
525    like Visual C / C++, since the unix-like *.a library files are compatible
526    with Windows *.lib files, you can simply rename all *.a libraries to *.lib.
527
528    With gmp-4.1.3, the only remaining problem seems to be the "alloca" calls
529    in GMP. Configuring GMP and MPFR with --enable-alloca=malloc-reentrant
530    should work (if you build MPFR with GMP internal files).
531
532    Or you could add the library
533     "$MINGWIN$/lib/gcc-lib/mingw32/$VERSION$/libgcc.a"
534    to your project: it contains all the extra-functions needed by a program
535    compiled by gcc (division of 64-bit integer, bcopy, alloca...).
536    Of course, include it if and only if your compiler is not gcc.
537
5384 - On Windows32 / MinGW, if all the tests fail, try to run the test suite
539    with "make check EXEEXT=".
540
5415 - To avoid using the Microsoft runtime (which might not be conform to ISO C),
542    you can use the MinGW runtime package (which is an integral part of MinGW).
543    For example, with MinGW versions 3.15 and later you can get an
544    ISO-compliant printf() if you compile your application with either
545    '-ansi', '-posix' or '-D__USE_MINGW_ANSI_STDIO'. For example, you can
546    compile and test MPFR with CC="gcc -D__USE_MINGW_ANSI_STDIO".
547
548    For example under Win32, the following problem has been experienced with
549    MPFR 2.4.0 RC1 and the MSVC runtime (msvcrt.dll):
550
551       Error in mpfr_vsprintf (s, "%.*Zi, %R*e, %Lf%n", ...);
552       expected: "00000010610209857723, -1.2345678875e+07, 0.032258"
553       got:      "00000010610209857723, -1.2345678875e+07, -0.000000"
554       FAIL: tsprintf.exe
555
556    This error is due to the MSVC runtime not supporting the L length modifier
557    for formatted output (e.g. printf with %Lf). You can check this with the
558    following program:
559
560       #include <stdio.h>
561       int main (void)
562       {
563         long double d = 1. / 31.;
564         printf ("%Lf\n", d);
565         return 0;
566       }
567
568    The expected output is 0.032258.
569
570    Note: The L modifier has been standard for a long time (it was added
571    in ISO C89).
572
573    Note 2: this now works correctly with Visual C++ 2008 and 2010
574    (tested on Microsoft (R) 32-bit C/C++ Optimizing Compiler Version
575     15.00.21022.08 for 80x86, Microsoft (R) C/C++ Optimizing Compiler
576     Version 15.00.21022.08 for x64, Microsoft (R) 32-bit C/C++ Optimizing
577     Compiler Version 16.00.30319.01 for 80x86, Microsoft (R) C/C++ Optimizing
578     Compiler Version 16.00.30319.01 for x64).
579
580b. Using Cygwin
581===============
582
583This build should be similar to that for MinGW except that the resulting
584library depends on the Cygwin DLL and cannot therefore be used with
585Visual Studio as with MinGW. Indeed, the binaries compiled with Cygwin
586require a dynamic library (cygwin.dll) to work; there is a Cygwin option
587-mno-cygwin to build native code, but it may require some non-portable tricks.
588
589In case of failure, you may need to pass LDFLAGS='-shared-libgcc' at the
590end of the configure line due to a bug in GCC. Otherwise, if threading
591support is not needed, you can configure MPFR with --disable-thread-safe.
592
593c. Using Visual C++ 2008/2010
594=============================
595
596Win32 versions of the MPFR library can be built using Microsoft Visual
597C++ 2008 or 2010 using the build projects available here:
598
599http://gladman.plushost.co.uk/oldsite/computing/gmp4win.php
600
601These build projects contain both win32 and x64 builds but the latter
602will give errors if your version of Visual C++ lacks the 64-bit
603compiler and tools.   The 32-bit build projects should however work
604on Visual C++ 2008, Visual C++ Express 2008 (SP1), Visual C++ 2010
605and Visual C++ Express 2010.
606
607MPFR for use with 64-bit Windows Applications (x64)
608===================================================
609
610There are two ways of building MPFR for use with 64-bit Windows
611applications.
612
613a. Using MinGW64
614================
615
616The MinGW64 version of the GCC compiler is now available here:
617
618http://sourceforge.net/projects/mingw-w64/
619
620It can build both GMP and MPFR for 64-bit Windows applications.
621
622b. Using Visual C++ 2008/2010
623=============================
624
625x64 versions of the MPFR library can be built using Microsoft Visual
626C++ 2008 or 2010 using the build projects available here:
627
628http://gladman.plushost.co.uk/oldsite/computing/gmp4win.php
629
630These build projects contain both win32 and x64 builds but the latter
631can only be built if your version of Visual C++ contains the 64-bit
632compiler and tools.  On Visual C++ 2008, the 64-bit tools are an
633option during installation so if you don't have them you will need
634to start the Visual Studio installer and add them to your IDE
635configuration.  On Visual C++ 2010 they are installed by default.
636
637As delivered, Visual C++ Express 2008 SP1 cannot build x64 projects
638but the Windows SDK can be added to it to allow this. The IDE then
639needs to be configured as described here:
640
641http://msdn.microsoft.com/en-us/library/9yb4317s(VS.80).aspx
642
643to allow x64 builds.
644
645Visual C++ Express 2010 requires the Windows 7 SDK to be installed
646in order to build x64 projects. This SDK is available here:
647
648http://tinyurl.com/25zz8r6
649
650In this case, once this SDK has been installed, Visual C++ Express 2010
651will build x64 projects without further changes.
652