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