Update.
[glibc/history.git] / manual / install.texi
blob00b4cbe520fe67194767684eaa5f73f4dadc368e
1 @c This is for making the `INSTALL' file for the distribution.
2 @c Makeinfo ignores it when processing the file from the include.
3 @setfilename INSTALL
5 @node Installation, Maintenance, Library Summary, Top
6 @c %MENU% How to install the GNU C library
7 @appendix Installing the GNU C Library
9 @menu
10 * Tools for Installation::      We recommend using these tools to build.
11 * Supported Configurations::    What systems the GNU C library runs on.
12 * Tips for Installation::       Useful hints for the installation.
13 * Reporting Bugs::              How to report bugs (if you want to
14                                 get them fixed) and other troubles
15                                 you may have with the GNU C library.
16 @end menu
18 Installation of the GNU C library is relatively simple, but usually
19 requires several GNU tools to be installed already.
20 @iftex
21 (@pxref{Tools for Installation}, below.)
22 @end iftex
24 Before you do anything else, you should read the file @file{FAQ} found
25 at the top level of the source tree.  This file answers common questions
26 and describes problems you may experience with compilation and
27 installation.  It is updated more frequently than this manual.
29 To configure the GNU C library for your system, run the shell script
30 @file{configure} with @code{sh}.  You might use an argument which is the
31 conventional GNU name for your system configuration---for example,
32 @samp{i486-pc-linux-gnu}, for Linux running on i486.
33 @xref{Installation, Installation, Installing GNU CC, gcc.info, Using and
34 Porting GNU CC}, for a full description of standard GNU configuration
35 names.  If you omit the configuration name, @file{configure} will try to
36 guess one for you by inspecting the system it is running on.  It may or
37 may not be able to come up with a guess, and the guess might be
38 wrong.  @file{configure} will tell you the canonical name of the chosen
39 configuration before proceeding.
41 Here are some options that you should specify (if appropriate) when
42 you run @code{configure}:
44 @table @samp
45 @item --with-binutils=@var{directory}
46 Use the binutils (assembler and linker) in @file{@var{directory}}, not
47 the ones the C compiler would default to.  You could use this option if
48 the default binutils on your system cannot deal with all the constructs
49 in the GNU C library.  (@code{configure} will detect the problem and
50 suppress these constructs, so the library will still be usable, but
51 functionality may be lost---for example, you can not build a shared libc
52 with old binutils.)
54 @c extra blank line makes it look better
55 @item --without-fp
56 @itemx --nfp
58 Use this option if your computer lacks hardware floating-point support
59 and your operating system does not emulate an FPU.
61 @item --prefix=@var{directory}
62 Install machine-independent data files in subdirectories of
63 @file{@var{directory}}.  (You can also set this in @file{configparms};
64 see below.)  The default is to install in `/usr/local'.
66 @item --exec-prefix=@var{directory}
67 Install the library and other machine-dependent files in subdirectories
68 of @file{@var{directory}}.  (You can also set this in
69 @file{configparms}; see below.)  The default is to use <prefix>/bin
70 and <prefix>/sbin.
72 @item --enable-shared
73 @itemx --disable-shared
74 Enable or disable building of an ELF shared library on systems that
75 support it.  The default is to build the shared library on systems using
76 ELF when the GNU @code{binutils} are available.
78 @item --enable-profile
79 @itemx --disable-profile
80 Enable or disable building of the profiled C library, @samp{-lc_p}.  The
81 default is to build the profiled library.  You may wish to disable it if
82 you don't plan to do profiling, because it doubles the build time of
83 compiling just the unprofiled static library.
85 @item --enable-omitfp
86 Enable building a highly-optimized but possibly undebuggable C
87 library.  This causes the normal static and shared (if enabled) C
88 libraries to be compiled with maximal optimization, including the
89 @samp{-fomit-frame-pointer} switch that makes debugging impossible on
90 many machines, and without debugging information (which makes the
91 binaries substantially smaller).  An additional static library is
92 compiled with no optimization and full debugging information, and
93 installed as @samp{-lc_g}.
95 @item --enable-add-ons[=LIST]
96 Certain components of the C library are distributed separately from the
97 rest of the sources.  In particular, the @code{crypt} function and its
98 friends are separated due to US export control regulations, and the
99 threading support code for Linux is maintained separately.  You can get
100 these @dfn{add-on} packages from the same place you got the libc
101 sources.  To use them, unpack them into your source tree, and give
102 @code{configure} the @samp{--enable-add-ons} option.
104 If you do not wish to use some add-on package that you have present in
105 your source tree, give this option a list of the add-ons that you
106 @emph{do} want used, like this: @samp{--enable-add-ons=crypt,linuxthreads}
108 @item --with-headers=DIRECTORY
109 Search only DIRECTORY and the C compiler's private directory for header
110 files not found in the libc sources.  @file{/usr/include} will not be
111 searched if this option is given.  On Linux, DIRECTORY should be the
112 kernel's private include directory (usually
113 @file{/usr/src/linux/include}).
115 This option is primarily of use on a system where the headers in
116 @file{/usr/include} come from an older version of glibc.  Conflicts can
117 occasionally happen in this case.  Note that Linux libc5 qualifies as an
118 older version of glibc.  You can also use this option if you want to
119 compile glibc with a newer set of kernel headers than the ones found in
120 @file{/usr/include}.
121 @end table
123 You should not build the library in the same directory as the sources,
124 because there are bugs in @code{make clean}.  Make a directory for the
125 build, and run @code{configure} from that directory, like this:
127 @smallexample
128 mkdir linux
129 cd linux
130 ../configure
131 @end smallexample
133 @noindent
134 @code{configure} looks for the sources in whatever directory you
135 specified for finding @code{configure} itself.  It does not matter where
136 in the file system the source and build directories are---as long as you
137 specify the source directory when you run @code{configure}, you will get
138 the proper results.
140 This feature lets you keep sources and binaries in different
141 directories, and that makes it easy to build the library for several
142 different machines from the same set of sources.  Simply create a
143 build directory for each target machine, and run @code{configure} in
144 that directory specifying the target machine's configuration name.
146 The library has a number of special-purpose configuration parameters.
147 These are defined in the file @file{configparms}; see the comments in
148 that file for the details.  To change them, copy @file{configparms} into
149 your build directory and modify it as appropriate for your system.
150 @code{configure} will not notice your modifications if you change the
151 file in the source directory.
153 It is easy to configure the GNU C library for cross-compilation by
154 setting a few variables in @file{configparms}.  Set @code{CC} to the
155 cross-compiler for the target you configured the library for; it is
156 important to use this same @code{CC} value when running
157 @code{configure}, like this: @samp{CC=@var{target}-gcc configure
158 @var{target}}.  Set @code{BUILD_CC} to the compiler to use for for
159 programs run on the build system as part of compiling the library.  You
160 may need to set @code{AR} and @code{RANLIB} to cross-compiling versions
161 of @code{ar} and @code{ranlib} if the native tools are not configured to
162 work with object files for the target you configured for.
164 Some of the machine-dependent code for some machines uses extensions in
165 the GNU C compiler, so you may need to compile the library with GCC.
166 (In fact, all of the existing complete ports require GCC.)
168 To build the library and related programs, type @code{make}.  This will
169 produce a lot of output, some of which may look like errors from
170 @code{make} (but isn't).  Look for error messages from @code{make}
171 containing @samp{***}.  Those indicate that something is really wrong.
173 The compilation process takes several hours even on fast hardware;
174 expect at least two hours for the default configuration on i586 for
175 Linux.  For Hurd times are much longer.  All current releases of GCC
176 have a problem which causes them to take several minutes to compile
177 certain files in the iconvdata directory.  Do not panic if the compiler
178 appears to hang.
180 To build and run some test programs which exercise some of the library
181 facilities, type @code{make check}.  This will produce several files
182 with names like @file{@var{program}.out}.
184 To format the @cite{GNU C Library Reference Manual} for printing, type
185 @w{@code{make dvi}}.  You need a working @TeX{} installation to do this.
187 To install the library and its header files, and the Info files of the
188 manual, type @code{make install}.  This will build things if necessary,
189 before installing them.  If you want to install the files in a different
190 place than the one specified at configuration time you can specify a
191 value for the Makefile variable @code{install_root} on the command line.
192 This is useful to create chroot'ed environment or to prepare binary
193 releases.@refill
195 For now (in this alpha version, and at least on RedHat Linux), if you
196 are trying to install this as your default libraries, a different
197 installation method is recommended.  Move @file{/usr/include} out of the
198 way, create a new @file{/usr/include} directory (don't forget the
199 symlinks @file{/usr/include/asm} and @file{/usr/include/linux}, that
200 should point to @file{/usr/src/linux/include/asm} and
201 @file{/usr/src/linux/include/linux} -or wherever you keep your kernel
202 sources-respectively), build normally and install into somewhere else
203 via @code{install_root}. Then move your @code{/usr/include} back, and
204 copy the newly created stuff by hand over the old. Remember to copy
205 programs and shared libraries into @file{FILENAME.new} and then move
206 @file{FILENAME.new} to @file{FILENAME}, as the files might be in
207 use. You will have to @code{ranlib} your copies of the static libraries
208 @file{/usr/lib/libNAME.a}. You will see that @file{libbsd-compat.a},
209 @file{libieee.a}, and @file{libmcheck.a} are just object files, not
210 archives. This is normal.  Copy the new header files over the old ones
211 by something like @w{@code{cd /usr; (cd INSTALL_ROOT; tar cf - include) |
212 tar xf -}}.
214 @node Tools for Installation
215 @appendixsec Recommended Tools to Install the GNU C Library
216 @cindex installation tools
217 @cindex tools, for installing library
219 We recommend installing the following GNU tools before attempting to
220 build the GNU C library:
222 @itemize @bullet
223 @item
224 GNU @code{make} 3.75
226 You need the latest version of GNU @code{make}.  Modifying the GNU C
227 Library to work with other @code{make} programs would be so hard that we
228 recommend you port GNU @code{make} instead.  @strong{Really.}  We
229 recommend version GNU @code{make} version 3.75.  Versions 3.76 and
230 3.76.1 are known to have bugs which only show up in big projects like
231 GNU @code{libc}.
233 @item
234 GCC 2.8.1/EGCS 1.0.2
236 On most platforms, the GNU C library can only be compiled with the GNU C
237 compiler family.  We recommend GCC version 2.8.1 and EGCS version 1.0.2
238 or later versions of these two; earlier versions may have problems.
240 @item
241 GNU @code{binutils} 2.8.1.0.23
243 Using the GNU @code{binutils} (assembler, linker, and related tools) is
244 preferable when possible, and they are required to build an ELF shared C
245 library.  Version 2.1 of the library uses ELF symbol versioning
246 extensively.  Support for this feature is incomplete or buggy before
247 binutils 2.8.1.0.23, so you must use at least this version.
249 @item
250 GNU @code{texinfo} 3.11
252 To correctly translate and install the Texinfo documentation you need
253 this version of the @code{texinfo} package.  Earlier versions do not
254 understand all the tags used in the document, and the installation
255 mechanisms for the info files is not present or works differently.
257 On some Debian Linux based systems the @code{install-info} program
258 supplied with the system works differently from the one we expect.  You
259 must therefore run @code{make install} like this:
261 @smallexample
262 make INSTALL_INFO=/path/to/GNU/install-info install
263 @end smallexample
265 @item
266 GNU @code{awk} 3.0
268 Several files used during the build are generated using features of GNU
269 @code{awk} that are not found in other implementations.
270 @c XXX: Does mawk work?
271 @end itemize
273 @noindent
274 If you change any of the @file{configure.in} files you will also need
276 @itemize @bullet
277 @item
278 GNU @code{autoconf} 2.12
279 @end itemize
281 @noindent
282 and if you change any of the message translation files you will need
284 @itemize @bullet
285 @item
286 GNU @code{gettext} 0.10 or later
287 @end itemize
289 @noindent
290 You may also need these packages if you upgrade your source tree using
291 patches, although we try to avoid this.
294 @node Supported Configurations
295 @appendixsec Supported Configurations
296 @cindex configurations, all supported
298 The GNU C Library currently supports configurations that match the
299 following patterns:
301 @smallexample
302 alpha-@var{anything}-linux
303 arm-@var{anything}-linuxaout
304 arm-@var{anything}-none
305 i@var{x}86-@var{anything}-gnu
306 i@var{x}86-@var{anything}-linux
307 m68k-@var{anything}-linux
308 powerpc-@var{anything}-linux
309 sparc-@var{anything}-linux
310 sparc64-@var{anything}-linux
311 @end smallexample
313 Former releases of this library (version 1.09.1 and perhaps earlier
314 versions) used to run on the following configurations:
316 @smallexample
317 alpha-dec-osf1
318 alpha-@var{anything}-linuxecoff
319 i@var{x}86-@var{anything}-bsd4.3
320 i@var{x}86-@var{anything}-isc2.2
321 i@var{x}86-@var{anything}-isc3.@var{n}
322 i@var{x}86-@var{anything}-sco3.2
323 i@var{x}86-@var{anything}-sco3.2v4
324 i@var{x}86-@var{anything}-sysv
325 i@var{x}86-@var{anything}-sysv4
326 i@var{x}86-force_cpu386-none
327 i@var{x}86-sequent-bsd
328 i960-nindy960-none
329 m68k-hp-bsd4.3
330 m68k-mvme135-none
331 m68k-mvme136-none
332 m68k-sony-newsos3
333 m68k-sony-newsos4
334 m68k-sun-sunos4.@var{n}
335 mips-dec-ultrix4.@var{n}
336 mips-sgi-irix4.@var{n}
337 sparc-sun-solaris2.@var{n}
338 sparc-sun-sunos4.@var{n}
339 @end smallexample
341 Since no one has volunteered to test and fix these configurations,
342 they are not supported at the moment.  They probably don't compile;
343 they definitely don't work anymore.  Porting the library is not hard.
344 If you are interested in doing a port, please contact the glibc
345 maintainers by sending electronic mail to @email{bug-glibc@@gnu.org}.
347 Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486},
348 @samp{i586}, or @samp{i686}.  All of those configurations produce a
349 library that can run on any of these processors.  The library will be
350 optimized for the specified processor, but will not use instructions not
351 available on all of them.
353 While no other configurations are supported, there are handy aliases for
354 these few.  (These aliases work in other GNU software as well.)
356 @smallexample
357 decstation
358 hp320-bsd4.3 hp300bsd
359 i486-gnu
360 i586-linux
361 i386-sco
362 i386-sco3.2v4
363 i386-sequent-dynix
364 i386-svr4
365 news
366 sun3-sunos4.@var{n} sun3
367 sun4-solaris2.@var{n} sun4-sunos5.@var{n}
368 sun4-sunos4.@var{n} sun4
369 @end smallexample
371 @node Tips for Installation
372 @appendixsec Useful hints for the installation
374 There are a some more or less obvious methods one should know when
375 compiling GNU libc:
377 @itemize @bullet
378 @item
379 Better never compile in the source directory.  Create a new directory
380 and run the @file{configure} from there.  Everything should happen
381 automagically.
383 @item
384 You can use the @code{-j} option of GNU make by changing the line
385 specifying @code{PARALLELMAKE} in the Makefile generated during the
386 configuration.
388 It is not useful to start the @code{make} process using the @code{-j}
389 option since this option is not propagated down to the sub-@code{make}s.
391 @item
392 If you made some changes after a complete build and only want to check
393 these changes run @code{make} while specifying the list of subdirs it
394 has to visit.
396 @smallexample
397 make subdirs="nss elf"
398 @end smallexample
400 The above build run will only visit the subdirectories @file{nss} and
401 @file{elf}.  Beside this it updates the @file{libc} files itself.
402 @end itemize
404 @node Reporting Bugs
405 @appendixsec Reporting Bugs
406 @cindex reporting bugs
407 @cindex bugs, reporting
409 There are probably bugs in the GNU C library.  There are certainly
410 errors and omissions in this manual.  If you report them, they will get
411 fixed.  If you don't, no one will ever know about them and they will
412 remain unfixed for all eternity, if not longer.
414 To report a bug, first you must find it.  Hopefully, this will be the
415 hard part.  Once you've found a bug, make sure it's really a bug.  A
416 good way to do this is to see if the GNU C library behaves the same way
417 some other C library does.  If so, probably you are wrong and the
418 libraries are right (but not necessarily).  If not, one of the libraries
419 is probably wrong.
421 Once you're sure you've found a bug, try to narrow it down to the
422 smallest test case that reproduces the problem.  In the case of a C
423 library, you really only need to narrow it down to one library
424 function call, if possible.  This should not be too difficult.
426 The final step when you have a simple test case is to report the bug.
427 When reporting a bug, send your test case, the results you got, the
428 results you expected, what you think the problem might be (if you've
429 thought of anything), your system type, and the version of the GNU C
430 library which you are using.  Also include the files
431 @file{config.status} and @file{config.make} which are created by running
432 @file{configure}; they will be in whatever directory was current when
433 you ran @file{configure}.
435 If you think you have found some way in which the GNU C library does not
436 conform to the ISO and POSIX standards (@pxref{Standards and
437 Portability}), that is definitely a bug.  Report it!@refill
439 Send bug reports to the Internet address @email{bug-glibc@@gnu.org}
440 using the @code{glibcbug} script which is installed by the GNU C
441 library.  If you have other problems with installation or use, please
442 report those as well.@refill
444 If you are not sure how a function should behave, and this manual
445 doesn't tell you, that's a bug in the manual.  Report that too!  If the
446 function's behavior disagrees with the manual, then either the library
447 or the manual has a bug, so report the disagreement.  If you find any
448 errors or omissions in this manual, please report them to the Internet
449 address @email{bug-glibc-manual@@gnu.org}.  If you refer to specific
450 sections when reporting on the manual, please include the section names
451 for easier identification.