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