aboutsummaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL455
1 files changed, 268 insertions, 187 deletions
diff --git a/INSTALL b/INSTALL
index 1476bd8..25ede5f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,16 +4,13 @@ Library Maintenance
How to Install the GNU C Library
================================
- Installation of the GNU C library is relatively simple.
-
- You need the latest version of GNU `make'. Modifying the GNU C
-Library to work with other `make' programs would be so hard that we
-recommend you port GNU `make' instead. *Really.*
+ Installation of the GNU C library is relatively simple, but usually
+requires several GNU tools to be installed already.
To configure the GNU C library for your system, run the shell script
`configure' with `sh'. Use an argument which is the conventional GNU
name for your system configuration--for example, `sparc-sun-sunos4.1',
-for a Sun 4 running Sunos 4.1. *Note Installation:
+for a Sun 4 running SunOS 4.1. *Note Installation:
(gcc.info)Installation, for a full description of standard GNU
configuration names. If you omit the configuration name, `configure'
will try to guess one for you by inspecting the system it is running
@@ -21,46 +18,6 @@ on. It may or may not be able to come up with a guess, and the its
guess might be wrong. `configure' will tell you the canonical name of
the chosen configuration before proceeding.
- The GNU C Library currently supports configurations that match the
-following patterns:
-
- alpha-dec-osf1
- i386-ANYTHING-bsd4.3
- i386-ANYTHING-gnu
- i386-ANYTHING-isc2.2
- i386-ANYTHING-isc3.N
- i386-ANYTHING-sco3.2
- i386-ANYTHING-sco3.2v4
- i386-ANYTHING-sysv
- i386-ANYTHING-sysv4
- i386-force_cpu386-none
- i386-sequent-bsd
- i960-nindy960-none
- m68k-hp-bsd4.3
- m68k-mvme135-none
- m68k-mvme136-none
- m68k-sony-newsos3
- m68k-sony-newsos4
- m68k-sun-sunos4.N
- mips-dec-ultrix4.N
- mips-sgi-irix4.N
- sparc-sun-solaris2.N
- sparc-sun-sunos4.N
-
- While no other configurations are supported, there are handy aliases
-for these few. (These aliases work in other GNU software as well.)
-
- decstation
- hp320-bsd4.3 hp300bsd
- i386-sco
- i386-sco3.2v4
- i386-sequent-dynix
- i386-svr4
- news
- sun3-sunos4.N sun3
- sun4-solaris2.N sun4-sunos5.N
- sun4-sunos4.N sun4
-
Here are some options that you should specify (if appropriate) when
you run `configure':
@@ -76,8 +33,15 @@ you run `configure':
building the GNU C Library. On some systems, the library may not
build properly if you do *not* use `gas'.
+`--with-gnu-binutils'
+ This option implies both `--with-gnu-ld' and `--with-gnu-as'. On
+ systems where GNU tools are the system tools, there is no need to
+ specify this option. These include GNU, GNU/Linux, and free BSD
+ systems.
+
+`--without-fp'
`--nfp'
- Use this option if your computer lacks hardware floating point
+ Use this option if your computer lacks hardware floating-point
support.
`--prefix=DIRECTORY'
@@ -89,6 +53,29 @@ you run `configure':
subdirectories of `DIRECTORY'. (You can also set this in
`configparms'; see below.)
+`--enable-shared'
+`--disable-shared'
+ Enable or disable building of an ELF shared library on systems that
+ support it. The default is to build the shared library on systems
+ using ELF when the GNU `binutils' are available.
+
+`--enable-profile'
+`--disable-profile'
+ Enable or disable building of the profiled C library, `-lc_p'. The
+ default is to build the profiled library. You may wish to disable
+ it if you don't plan to do profiling, because it doubles the build
+ time of compiling just the unprofiled static library.
+
+`--enable-omitfp'
+ Enable building a highly-optimized but possibly undebuggable
+ static C library. This causes the normal static and shared (if
+ enabled) C libraries to be compiled with maximal optimization,
+ including the `-fomit-frame-pointer' switch that makes debugging
+ impossible on many machines, and without debugging information
+ (which makes the binaries substantially smaller). An additional
+ static library is compiled with no optimization and full debugging
+ information, and installed as `-lc_g'.
+
The simplest way to run `configure' is to do it in the directory
that contains the library sources. This prepares to build the library
in that very directory.
@@ -141,57 +128,101 @@ work with object files for the target you configured for.
in the GNU C compiler, so you may need to compile the library with GCC.
(In fact, all of the existing complete ports require GCC.)
- The current release of the C library contains some header files that
-the compiler normally provides: `stddef.h', `stdarg.h', and several
-files with names of the form `va-MACHINE.h'. The versions of these
-files that came with older releases of GCC do not work properly with
-the GNU C library. The `stddef.h' file in release 2.2 and later of GCC
-is correct. If you have release 2.2 or later of GCC, use its version
-of `stddef.h' instead of the C library's. To do this, put the line
-`override stddef.h =' in `configparms'. The other files are corrected
-in release 2.3 and later of GCC. `configure' will automatically detect
-whether the installed `stdarg.h' and `va-MACHINE.h' files are
-compatible with the C library, and use its own if not.
-
- There is a potential problem with the `size_t' type and versions of
-GCC prior to release 2.4. ANSI C requires that `size_t' always be an
-unsigned type. For compatibility with existing systems' header files,
-GCC defines `size_t' in `stddef.h' to be whatever type the system's
-`sys/types.h' defines it to be. Most Unix systems that define `size_t'
-in `sys/types.h', define it to be a signed type. Some code in the
-library depends on `size_t' being an unsigned type, and will not work
-correctly if it is signed.
-
- The GNU C library code which expects `size_t' to be unsigned is
-correct. The definition of `size_t' as a signed type is incorrect.
-Versions 2.4 and later of GCC always define `size_t' as an unsigned
-type, and GCC's `fixincludes' script massages the system's
-`sys/types.h' so as not to conflict with this.
-
- In the meantime, we work around this problem by telling GCC
-explicitly to use an unsigned type for `size_t' when compiling the GNU C
-library. `configure' will automatically detect what type GCC uses for
-`size_t' arrange to override it if necessary.
-
- To build the library, type `make lib'. This will produce a lot of
-output, some of which looks like errors from `make' (but isn't). Look
-for error messages from `make' containing `***'. Those indicate that
-something is really wrong.
+ To build the library and related programs, type `make'. This will
+produce a lot of output, some of which may look like errors from `make'
+(but isn't). Look for error messages from `make' containing `***'.
+Those indicate that something is really wrong.
To build and run some test programs which exercise some of the
-library facilities, type `make tests'. This will produce several files
+library facilities, type `make check'. This will produce several files
with names like `PROGRAM.out'.
To format the `GNU C Library Reference Manual' for printing, type
-`make dvi'. To format the Info version of the manual for on line
-reading with `C-h i' in Emacs or with the `info' program, type
-`make info'.
+`make dvi'.
To install the library and its header files, and the Info files of
-the manual, type `make install', after setting the installation
-directories in `configparms'. This will build things if necessary,
+the manual, type `make install'. This will build things if necessary,
before installing them.
+Recommended Tools to Install the GNU C Library
+----------------------------------------------
+
+ We recommend installing the following GNU tools before attempting to
+build the GNU C library:
+
+ * `make' 3.75
+
+ You need the latest version of GNU `make'. Modifying the GNU C
+ Library to work with other `make' programs would be so hard that we
+ recommend you port GNU `make' instead. *Really.* We recommend
+ version GNU `make' version 3.75 or later.
+
+ * GCC 2.7.2
+
+ On most platforms, the GNU C library can only be compiled with the
+ GNU C compiler. We recommend GCC version 2.7.2 or later; earlier
+ versions may have problems.
+
+ * `binutils' 2.6
+
+ Using the GNU `binutils' (assembler, linker, and related tools) is
+ preferable when possible, and they are required to build an ELF
+ shared C library. We recommend `binutils' version 2.6 or later;
+ earlier versions are known to have problems.
+
+Supported Configurations
+------------------------
+
+ The GNU C Library currently supports configurations that match the
+following patterns:
+
+ alpha-dec-osf1
+ alpha-ANYTHING-linux
+ alpha-ANYTHING-linuxecoff
+ iX86-ANYTHING-bsd4.3
+ iX86-ANYTHING-gnu
+ iX86-ANYTHING-isc2.2
+ iX86-ANYTHING-isc3.N
+ iX86-ANYTHING-linux
+ iX86-ANYTHING-sco3.2
+ iX86-ANYTHING-sco3.2v4
+ iX86-ANYTHING-sysv
+ iX86-ANYTHING-sysv4
+ iX86-force_cpu386-none
+ iX86-sequent-bsd
+ i960-nindy960-none
+ m68k-hp-bsd4.3
+ m68k-mvme135-none
+ m68k-mvme136-none
+ m68k-sony-newsos3
+ m68k-sony-newsos4
+ m68k-sun-sunos4.N
+ mips-dec-ultrix4.N
+ mips-sgi-irix4.N
+ sparc-sun-solaris2.N
+ sparc-sun-sunos4.N
+
+ Each case of `iX86' can be `i386', `i486', `i586', or `i686'.. All
+of those configurations produce a library that can run on any of these
+processors. The library will be optimized for the specified processor,
+but will not use instructions not available on all of them.
+
+ While no other configurations are supported, there are handy aliases
+for these few. (These aliases work in other GNU software as well.)
+
+ decstation
+ hp320-bsd4.3 hp300bsd
+ i486-gnu
+ i586-linux
+ i386-sco
+ i386-sco3.2v4
+ i386-sequent-dynix
+ i386-svr4
+ news
+ sun3-sunos4.N sun3
+ sun4-solaris2.N sun4-sunos5.N
+ sun4-sunos4.N sun4
+
Reporting Bugs
==============
@@ -246,8 +277,10 @@ But what they do is fairly straightforward, and only requires that you
define a few variables in the right places.
The library sources are divided into subdirectories, grouped by
-topic. The `string' subdirectory has all the string-manipulation
-functions, `stdio' has all the standard I/O functions, etc.
+topic.
+
+ The `string' subdirectory has all the string-manipulation functions,
+`math' has all the mathematical functions, etc.
Each subdirectory contains a simple makefile, called `Makefile',
which defines a few `make' variables and then includes the global
@@ -283,7 +316,9 @@ The basic variables that a subdirectory makefile defines are:
data in a file called `TEST-PROGRAM.input'; it will be given to
the test program on its standard input. If a test program wants
to be run with arguments, put the arguments (all on a single line)
- in a file called `TEST-PROGRAM.args'.
+ in a file called `TEST-PROGRAM.args'. Test programs should exit
+ with zero status when the test passes, and nonzero status when the
+ test indicates a bug in the library or error in building.
`others'
The names of "other" programs associated with this section of the
@@ -362,18 +397,24 @@ So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.
`sysdeps' has two "special" subdirectories, called `generic' and
`stub'. These two are always implicitly appended to the list of
subdirectories (in that order), so you needn't put them in an `Implies'
-file, and you should not create any subdirectories under them.
-`generic' is for things that can be implemented in machine-independent
-C, using only other machine-independent functions in the C library.
-`stub' is for "stub" versions of functions which cannot be implemented
-on a particular machine or operating system. The stub functions always
-return an error, and set `errno' to `ENOSYS' (Function not
-implemented). *Note Error Reporting::.
+file, and you should not create any subdirectories under them intended
+to be new specific categories. `generic' is for things that can be
+implemented in machine-independent C, using only other
+machine-independent functions in the C library. `stub' is for "stub"
+versions of functions which cannot be implemented on a particular
+machine or operating system. The stub functions always return an
+error, and set `errno' to `ENOSYS' (Function not implemented). *Note
+Error Reporting::.
A source file is known to be system-dependent by its having a
-version in `generic' or `stub'; every system-dependent function should
-have either a generic or stub implementation (there is no point in
-having both).
+version in `generic' or `stub'; every generally-available function whose
+implementation is system-dependent in should have either a generic or
+stub implementation (there is no point in having both). Some rare
+functions are only useful on specific systems and aren't defined at all
+on others; these do not appear anywhere in the system-independent
+source code or makefiles (including the `generic' and `stub'
+directories), only in the system-dependent `Makefile' in the specific
+system's subdirectory.
If you come across a file that is in one of the main source
directories (`string', `stdio', etc.), and you want to write a machine-
@@ -629,18 +670,106 @@ generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
Contributors to the GNU C Library
=================================
- The GNU C library was written almost entirely by Roland McGrath, who
-now maintains it. Some parts of the library were contributed or worked
-on by other people.
+ The GNU C library was written originally by Roland McGrath. Some
+parts of the library were contributed or worked on by other people.
* The `getopt' function and related code were written by Richard
Stallman, David J. MacKenzie, and Roland McGrath.
- * Most of the math functions are taken from 4.4 BSD; they have been
- modified only slightly to work with the GNU C library. The
- Internet-related code (most of the `inet' subdirectory) and several
- other miscellaneous functions and header files have been included
- with little or no modification.
+ * The merge sort function `qsort' was written by Michael J. Haertel.
+
+ * The quick sort function used as a fallback by `qsort' was written
+ by Douglas C. Schmidt.
+
+ * The memory allocation functions `malloc', `realloc' and `free' and
+ related code were written by Michael J. Haertel.
+
+ * Fast implementations of many of the string functions (`memcpy',
+ `strlen', etc.) were written by Torbjorn Granlund.
+
+ * The `tar.h' header file was written by David J. MacKenzie.
+
+ * The port to the MIPS DECStation running Ultrix 4
+ (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
+ Lance Taylor.
+
+ * The DES encryption function `crypt' and related functions were
+ contributed by Michael Glad.
+
+ * The `ftw' function was contributed by Ian Lance Taylor.
+
+ * The startup code to support SunOS shared libraries was contributed
+ by Tom Quinn.
+
+ * The `mktime' function was contributed by Paul Eggert.
+
+ * The port to the Sequent Symmetry running Dynix version 3
+ (`i386-sequent-bsd') was contributed by Jason Merrill.
+
+ * The timezone support code is derived from the public-domain
+ timezone package by Arthur David Olson and his many contributors.
+
+ * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
+ contributed by Brendan Kehoe, using some code written by Roland
+ McGrath.
+
+ * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
+ contributed by Tom Quinn.
+
+ * The port of the Mach and Hurd code to the MIPS architecture
+ (`mips-ANYTHING-gnu') was contributed by Kazumoto Kojima.
+
+ * The floating-point printing function used by `printf' and friends
+ and the floating-point reading function used by `scanf', `strtod'
+ and friends were written by Ulrich Drepper. The multi-precision
+ integer functions used in those functions are taken from GNU MP,
+ which was contributed by Torbjorn Granlund.
+
+ * The internationalization support in the library, and the support
+ programs `locale' and `localedef', were written by Ulrich Drepper.
+ Ulrich Drepper adapted the support code for message catalogs
+ (`libintl.h', etc.) from the GNU `gettext' package, which he also
+ wrote. He also contributed the `catgets' support and the entire
+ suite of multi-byte and wide-character support functions
+ (`wctype.h', `wchar.h', etc.).
+
+ * The implementations of the `nsswitch.conf' mechanism and the files
+ and DNS backends for it were designed and written by Ulrich
+ Drepper and Roland McGrath, based on a backend interface defined
+ by Peter Eriksson.
+
+ * The port to Linux i386/ELF (`i386-ANYTHING-linux') was contributed
+ by Ulrich Drepper, based in large part on work done in Hongjiu
+ Lu's Linux version of the GNU C Library.
+
+ * The port to Linux/m68k (`m68k-ANYTHING-linux') was contributed by
+ Andreas Schwab.
+
+ * Richard Henderson contributed the ELF dynamic linking code and
+ other support for the Alpha processor.
+
+ * David Mosberger-Tang contributed the port to Linux/Alpha
+ (`alpha-ANYTHING-linux').
+
+ * Stephen R. van den Berg contributed a highly-optimized `strstr'
+ function.
+
+ * Ulrich Drepper contributed the `hsearch' and `drand48' families of
+ functions; reentrant `...`_r'' versions of the `random' family;
+ System V shared memory and IPC support code; and several
+ highly-optimized string functions for iX86 processors.
+
+ * The math functions are taken from `fdlibm-5.1' by Sun
+ Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
+ Ulrich Drepper, Andreas Schwab, and Roland McGrath.
+
+ * The `libio' library used to implement `stdio' functions on some
+ platforms was written by Per Bothner and modified by Ulrich
+ Drepper.
+
+ * The Internet-related code (most of the `inet' subdirectory) and
+ several other miscellaneous functions and header files have been
+ included from 4.4 BSD with little or no modification.
All code incorporated from 4.4 BSD is under the following
copyright:
@@ -694,70 +823,7 @@ on by other people.
changes to fit into the GNU C library and to fit the ANSI C
standard, but the functional code is Berkeley's.
- * The merge sort function `qsort' was written by Michael J. Haertel.
-
- * The quick sort function used as a fallback by `qsort' was written
- by Douglas C. Schmidt.
-
- * The memory allocation functions `malloc', `realloc' and `free' and
- related code were written by Michael J. Haertel.
-
- * Fast implementations of many of the string functions (`memcpy',
- `strlen', etc.) were written by Torbjorn Granlund.
-
- * Some of the support code for Mach is taken from Mach 3.0 by CMU,
- and is under the following copyright terms:
-
- Mach Operating System
- Copyright (C) 1991,1990,1989 Carnegie Mellon University
- All Rights Reserved.
-
- Permission to use, copy, modify and distribute this software
- and its documentation is hereby granted, provided that both
- the copyright notice and this permission notice appear in all
- copies of the software, derivative works or modified
- versions, and any portions thereof, and that both notices
- appear in supporting documentation.
-
- CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS
- IS" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF
- ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
- THIS SOFTWARE.
-
- Carnegie Mellon requests users of this software to return to
-
- Software Distribution Coordinator
- School of Computer Science
- Carnegie Mellon University
- Pittsburgh PA 15213-3890
-
- or `Software.Distribution@CS.CMU.EDU' any improvements or
- extensions that they make and grant Carnegie Mellon the
- rights to redistribute these changes.
-
- * The `tar.h' header file was written by David J. MacKenzie.
-
- * The port to the MIPS DECStation running Ultrix 4
- (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
- Lance Taylor.
-
- * The DES encryption function `crypt' and related functions were
- contributed by Michael Glad.
-
- * The `ftw' function was contributed by Ian Lance Taylor.
-
- * The code to support SunOS shared libraries was contributed by Tom
- Quinn.
-
- * The `mktime' function was contributed by Noel Cragg.
-
- * The port to the Sequent Symmetry running Dynix version 3
- (`i386-sequent-bsd') was contributed by Jason Merrill.
-
- * The timezone support code is derived from the public-domain
- timezone package by Arthur David Olson.
-
- * The Internet resolver code is taken directly from BIND 4.9.1,
+ * The Internet resolver code is taken directly from BIND 4.9.4,
which is under both the Berkeley copyright above and also:
Portions Copyright (C) 1993 by Digital Equipment Corporation.
@@ -780,15 +846,6 @@ on by other people.
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
- contributed by Brendan Kehoe, using some code written by Roland
- McGrath.
-
- * The floating-point printing function used by `printf' and friends
- was written by Roland McGrath and Torbjorn Granlund. The
- multi-precision integer functions used in that function are taken
- from GNU MP, which was contributed by Torbjorn Granlund.
-
* The code to support Sun RPC is taken verbatim from Sun's
RPCSRC-4.0 distribution, and is covered by this copyright:
@@ -824,9 +881,33 @@ on by other people.
2550 Garcia Avenue
Mountain View, California 94043
- * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
- contributed by Tom Quinn.
+ * Some of the support code for Mach is taken from Mach 3.0 by CMU,
+ and is under the following copyright terms:
- * The port of the Mach and Hurd code to the MIPS architecture
- (`mips-ANYTHING-gnu') was contribued by Kazumoto Kojima.
+ Mach Operating System
+ Copyright (C) 1991,1990,1989 Carnegie Mellon University
+ All Rights Reserved.
+
+ Permission to use, copy, modify and distribute this software
+ and its documentation is hereby granted, provided that both
+ the copyright notice and this permission notice appear in all
+ copies of the software, derivative works or modified
+ versions, and any portions thereof, and that both notices
+ appear in supporting documentation.
+
+ CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS
+ IS" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF
+ ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
+ THIS SOFTWARE.
+
+ Carnegie Mellon requests users of this software to return to
+
+ Software Distribution Coordinator
+ School of Computer Science
+ Carnegie Mellon University
+ Pittsburgh PA 15213-3890
+
+ or `Software.Distribution@CS.CMU.EDU' any improvements or
+ extensions that they make and grant Carnegie Mellon the
+ rights to redistribute these changes.