diff options
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 455 |
1 files changed, 268 insertions, 187 deletions
@@ -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. |