1 GSL - GNU Scientific Library
2 ============================
4 Installation Instructions
5 =========================
7 GSL follows the standard GNU installation procedure. To compile GSL
8 you will need an ANSI C-compiler. After unpacking the distribution
9 the Makefiles can be prepared using the configure command,
13 You can then build the library by typing,
17 Both static and shared versions of the libraries will be compiled by
18 default. Compilation of shared libraries can be turned off by
19 specifying the `--disable-shared' option to `configure', e.g.
21 ./configure --disable-shared
23 If you encounter problems building the library try using the above
24 option, because some platforms do not support shared libraries. If
25 you change any compilation options you will need to remove any
26 existing compiled files with,
30 before running "make" again, so the new settings take effect.
32 For notes about problems with specific platforms and compilers see the
33 next section of this file (below).
35 An extensive test suite is available. After compiling the library
36 with "make", it can be invoked with "make check" at the top level.
37 The test output should be directed to a file rather than a terminal,
42 to allow any errors to be examined in detail. By default, only test
43 failures are shown. To see the complete output, set the environment
44 variable GSL_TEST_VERBOSE=1.
46 If you run the tests and get some failures, please see the notes on
47 platform specific problems below. If you find failures that are not
48 mentioned, please report them to bug-gsl@gnu.org.
50 The library can be installed using the command,
54 The default installation directory prefix is /usr/local. Installing
55 in this directory will require root privileges on most systems (use
58 The installation directory can be changed with the --prefix option to
59 configure. Consult the "Further Information" section below for
60 instructions on installing the library in another location or changing
61 other default compilation options.
63 ------------------------------
65 Platform Specific Compilation Notes
66 ===================================
68 This section documents any known issues with installing GSL on
71 * General hints for all platforms
82 Hints for any platform
83 ======================
85 1) If there are problems building the library try using
87 ./configure --disable-shared
89 This will turn off the compilation of shared libraries and may allow
90 the build process to complete successfully.
92 If you get any problems try this first.
94 2) If you want to pass C++ functions with exceptions to GSL, the
95 library needs to be compiled with the GCC option -fexceptions
97 ./confugire CFLAGS="-fexceptions ..."
99 to allow C++ exceptions to be handled.
101 3) With gcc-2.95/2.96 the tests fail in the eigen/ directory. This is
102 due to a compiler optimization bug which causes errors in the
103 manipulation of complex numbers.
105 This is fixed in more recent versions of gcc. Do not use the library
106 if you encounter this problem---install a newer version of gcc.
108 4) Attempts to run 'strip' on the static library libgsl.a will probably
109 produce a broken library (it is known to happen with GNU binutils
110 strip, and probably affects others too). The libgsl.a ar archive made
111 by libtool contains files with the same filenames from different
112 directories, and this causes the strip program to overwrite these
113 archive entries. If you need to produce a compact version of the
114 library compile without -g instead of using strip.
116 make install-strip does not work, due to a minor problem with autoconf
117 which is fixed in the 2.5 development version of autoconf. In the
118 meantime compile without -g instead if you need to reduce the file size.
120 5) The configure script can fail with a segmentation fault on bash-2.01
125 This is due to a bug in bash, related to the MAIL environment
126 variable. To work around it use
128 $ unset ENV MAIL MAILPATH
131 which should avoid the problem.
136 For compilation problems with the native compiler xlc, try disabling
140 setenv CFLAGS '-O -qmaxmem=8192'
141 ./configure --disable-shared
144 If you get the error,
146 ld: 0711-781 ERROR: TOC overflow.
148 you can try building the library with a larger linker
149 table-of-contents by setting LDFLAGS before compilation,
151 ./configure LDFLAGS="-Wl,-bbigtoc"
153 On older versions of AIX (e.g. 4.2) the size of the command-line is
154 limited to 24kb, which causes linking to fail (due to the large number
155 of files to be linked). Unfortunately this limit cannot be increased.
156 To link the library you may need to use a manual approach of
157 incrementally combining the object files in smaller groups.
159 On more recent versions of AIX (e.g >= 5.1) use
161 chdev -l sys0 -a ncargs=NNN
163 to increase the allowed number of arguments. NNN is the amount of
164 space measured in 4k blocks (default 6, maximum 1024)
166 If compiling with GCC the following error
168 fp-aix.c: In function `gsl_ieee_set_mode':
169 fp-aix.c:30: error: `fprnd_t' undeclared (first use in this function)
171 can occur if /usr/includes/float.h is not used, and instead the
172 float.h of the installed gcc is picked up instead -- it may be missing
173 the necessary structs. To work around it copy the missing parts
174 (between #ifdef _ALL_SOURCE and its #endif) from /usr/includes/float.h
175 into a new header file and #include that in fp-aix.c
177 Hints for Compaq/DEC Alpha
178 ==========================
180 When comping with GCC use the -mieee and -mfp-rounding-mode options
183 ./configure CFLAGS="-mieee -mfp-rounding-mode=d -g -O2"
185 The library should compile successfully with Compaq's C compiler on
186 Tru64 Unix 'cc' using the -std, -ieee and -fprm options. Use
189 make CFLAGS="-std -ieee -fprm d"
191 to build the library this way.
193 Use GNU tar to unpack the tar file, as Tru64 tar gives an error
199 The default mode of the HP-UX C compiler does not use ANSI C.
201 To compile GSL you need to select ANSI C mode with the following
202 configuration option:
204 ./configure CFLAGS="-Ae"
206 To switch on optimization use CFLAGS="-Ae -O".
211 The library should be compiled with the CFLAGS option
212 -OPT:IEEE_NaN_inf=ON to ensure correct IEEE arithmetic. The tests in
213 sys/ will fail without this option. The older deprecated option
214 -OPT:IEEE_comparisons=ON will also work.
216 The 32 bit IRIX compiler gives warnings about "long double" not being
217 supported. These can be ignored or turned off with,
219 ./configure CFLAGS="-woff 728"
223 make CFLAGS="-woff 728"
225 The compiler also gives warnings about certain libraries that are "not
226 used for resolving any symbol". This is harmless and the warnings can
229 You may get warnings about " /usr/bin/ld: arg list too long" when
230 building shared libraries. If so, try increasing the ncargs kernel
231 parameter with the systune(1m) command.
233 For 64-bit compilation use the following options,
235 ./configure CC=cc CFLAGS="-64" LDFLAGS="-64"
239 CFLAGS="-mabi-64" LDFLAGS="-mabi=64 -mips4 -L/usr/local/lib/mabi=64"
241 Hints for MacOS X and PowerPC
242 =============================
244 To install in /usr/local on MacOS systems, do "sudo make install" to
245 gain root privileges.
247 Note that GSL contains files with filenames of 32 characters or more.
248 Therefore you need to be careful in unpacking the tar file, as some
249 MacOS applications such as Stuffit Expander will truncate filenames to
250 31 characters. Using GNU tar and gunzip directly is the safe way to
251 unpack the distribution.
253 There are problems with dynamic linker, so the library should be
256 ./configure --disable-shared
258 It has been reported that shared libraries can be built if MacOS X
259 specific versions of libtool, automake and autoconf from
260 http://fink.sourceforge.net/ are installed, and the GSL source is
261 reconfigured from scratch (./autogen.sh; ./configure; make)
263 To avoid warnings about long-double, use the flag
265 CFLAGS="-Wno-long-double ....(other options here)"
267 in addition to the normal compilation options.
269 The GCC 3.3 compiler shipped by Apple contains a bug which causes the
270 wavelet tests to fail on "data untouched" tests at optimisation level
271 -O2. You may be able work around this by compiling with CFLAGS="-O1
274 F J Frankin <MEP95JFF@sheffield.ac.uk> reported that some early
275 versions of GCC-2.95 have a problem with long argument lists on PPC
276 architecture, and this prevents GSL from compiling correctly (e.g. the
277 test program in the blas directory gives a segmentation fault when
278 run). This problem is fixed in more recent versions of GCC.
281 Hints for Microsoft Windows
282 ===========================
284 GSL should compile with GCC under Cygwin on Microsoft Windows.
285 There is a gsl package in the standard Cygwin distribution which
286 contains any patches needed.
288 With Mingw/MSYS some floating point issues have been reported which
289 cause failures in the monte/ test directory.
294 As of July 2001 the OpenBSD log1p() function on i386 causes failures
295 in the gsl complex tests. The configure script has been hardcoded to
296 substitute gsl_log1p instead on OpenBSD. The log1p() bug has been
297 reported and so may be fixed in future versions of OpenBSD.
302 The configure script fails to detect the function 'isnan', leading to
303 a slew of errors 'isnan redefined'.
305 To work around this problem, run configure and edit the resulting
306 config.h file to comment out the line which defines HAVE_ISINF.
311 If you are using the Sun compilers then the library should be compiled
312 with the Sun C compiler 'cc', not 'CC' which is the C++ compiler.
314 The Sun compiler tools are stored in non-standard directories -- make
315 sure that all the compiler and linker tools (cc, ar, ranlib, ld) are
316 on the PATH. A typical PATH should include the directories
317 /opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb in that order.
321 $ PATH=/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:$PATH
322 $ ./configure CC=cc CFLAGS=-O
324 If you see configure output
328 it means that 'ar' has not been found, and the library will fail to
331 If you use the Sun compiler you should use the Sun linker and
332 assembler. If you use GCC, you can use the GNU linker and assembler
333 or the Sun linker and assembler.
335 There may be some warnings about "end of loop code not reached". These
336 can be ignored -- they come from the do { ... ; return ; } while(0)
337 statement in the GSL_ERROR macro.
339 ------------------------------
341 Further information on the standard GNU installation procedure
342 ==============================================================
344 The sections below describe the general features of the standard GNU
345 installation procedure.
350 These are generic installation instructions.
352 The `configure' shell script attempts to guess correct values for
353 various system-dependent variables used during compilation. It uses
354 those values to create a `Makefile' in each directory of the package.
355 It may also create one or more `.h' files containing system-dependent
356 definitions. Finally, it creates a shell script `config.status' that
357 you can run in the future to recreate the current configuration, a file
358 `config.cache' that saves the results of its tests to speed up
359 reconfiguring, and a file `config.log' containing compiler output
360 (useful mainly for debugging `configure').
362 If you need to do unusual things to compile the package, please try
363 to figure out how `configure' could check whether to do them, and mail
364 diffs or instructions to the address given in the `README' so they can
365 be considered for the next release. If at some point `config.cache'
366 contains results you don't want to keep, you may remove or edit it.
368 The file `configure.in' is used to create `configure' by a program
369 called `autoconf'. You only need `configure.in' if you want to change
370 it or regenerate `configure' using a newer version of `autoconf'.
372 The simplest way to compile this package is:
374 1. `cd' to the directory containing the package's source code and type
375 `./configure' to configure the package for your system. If you're
376 using `csh' on an old version of System V, you might need to type
377 `sh ./configure' instead to prevent `csh' from trying to execute
380 Running `configure' takes a while. While running, it prints some
381 messages telling which features it is checking for.
383 2. Type `make' to compile the package.
385 3. Optionally, type `make check' to run any self-tests that come with
388 4. Type `make install' to install the programs and any data files and
391 5. You can remove the program binaries and object files from the
392 source code directory by typing `make clean'. To also remove the
393 files that `configure' created (so you can compile the package for
394 a different kind of computer), type `make distclean'. There is
395 also a `make maintainer-clean' target, but that is intended mainly
396 for the package's developers. If you use it, you may have to get
397 all sorts of other programs in order to regenerate files that came
398 with the distribution.
400 Compilers and Options
401 =====================
403 Some systems require unusual options for compilation or linking that
404 the `configure' script does not know about. You can give `configure'
405 initial values for variables by setting them in the environment. Using
406 a Bourne-compatible shell, you can do that on the command line like
408 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
410 Or on systems that have the `env' program, you can do it like this:
411 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
413 Compiling For Multiple Architectures
414 ====================================
416 You can compile the package for more than one kind of computer at the
417 same time, by placing the object files for each architecture in their
418 own directory. To do this, you must use a version of `make' that
419 supports the `VPATH' variable, such as GNU `make'. `cd' to the
420 directory where you want the object files and executables to go and run
421 the `configure' script. `configure' automatically checks for the
422 source code in the directory that `configure' is in and in `..'.
424 If you have to use a `make' that does not supports the `VPATH'
425 variable, you have to compile the package for one architecture at a time
426 in the source code directory. After you have installed the package for
427 one architecture, use `make distclean' before reconfiguring for another
433 By default, `make install' will install the package's files in
434 `/usr/local/bin', `/usr/local/man', etc. You can specify an
435 installation prefix other than `/usr/local' by giving `configure' the
436 option `--prefix=PATH'.
438 You can specify separate installation prefixes for
439 architecture-specific files and architecture-independent files. If you
440 give `configure' the option `--exec-prefix=PATH', the package will use
441 PATH as the prefix for installing programs and libraries.
442 Documentation and other data files will still use the regular prefix.
444 If the package supports it, you can cause programs to be installed
445 with an extra prefix or suffix on their names by giving `configure' the
446 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
451 Some packages pay attention to `--enable-FEATURE' options to
452 `configure', where FEATURE indicates an optional part of the package.
453 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
454 is something like `gnu-as' or `x' (for the X Window System). The
455 `README' should mention any `--enable-' and `--with-' options that the
458 For packages that use the X Window System, `configure' can usually
459 find the X include and library files automatically, but if it doesn't,
460 you can use the `configure' options `--x-includes=DIR' and
461 `--x-libraries=DIR' to specify their locations.
463 Specifying the System Type
464 ==========================
466 There may be some features `configure' can not figure out
467 automatically, but needs to determine by the type of host the package
468 will run on. Usually `configure' can figure that out, but if it prints
469 a message saying it can not guess the host type, give it the
470 `--host=TYPE' option. TYPE can either be a short name for the system
471 type, such as `sun4', or a canonical name with three fields:
474 See the file `config.sub' for the possible values of each field. If
475 `config.sub' isn't included in this package, then this package doesn't
476 need to know the host type.
478 If you are building compiler tools for cross-compiling, you can also
479 use the `--target=TYPE' option to select the type of system they will
480 produce code for and the `--build=TYPE' option to select the type of
481 system on which you are compiling the package.
486 If you want to set default values for `configure' scripts to share,
487 you can create a site shell script called `config.site' that gives
488 default values for variables like `CC', `cache_file', and `prefix'.
489 `configure' looks for `PREFIX/share/config.site' if it exists, then
490 `PREFIX/etc/config.site' if it exists. Or, you can set the
491 `CONFIG_SITE' environment variable to the location of the site script.
492 A warning: not all `configure' scripts look for a site script.
497 `configure' recognizes the following options to control how it
501 Use and save the results of the tests in FILE instead of
502 `./config.cache'. Set FILE to `/dev/null' to disable caching, for
503 debugging `configure'.
506 Print a summary of the options to `configure', and exit.
511 Do not print messages saying which checks are being made.
514 Look for the package's source code in directory DIR. Usually
515 `configure' can determine that directory automatically.
518 Print the version of Autoconf used to generate the `configure'
521 `configure' also accepts some other, not widely useful, options.