Require GCC 4.3 or later.
[platform/upstream/glibc.git] / manual / install.texi
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
4
5 @node Installation, Maintenance, Library Summary, Top
6 @c %MENU% How to install the GNU C library
7 @appendix Installing the GNU C Library
8
9 Before you do anything else, you should read the file @file{FAQ} located
10 at the top level of the source tree.  This file answers common questions
11 and describes problems you may experience with compilation and
12 installation.  It is updated more frequently than this manual.
13
14 Features can be added to GNU Libc via @dfn{add-on} bundles.  These are
15 separate tar files, which you unpack into the top level of the source
16 tree.  Then you give @code{configure} the @samp{--enable-add-ons} option
17 to activate them, and they will be compiled into the library.
18
19 You will need recent versions of several GNU tools: definitely GCC and
20 GNU Make, and possibly others.  @xref{Tools for Compilation}, below.
21
22 @menu
23 * Configuring and compiling::   How to compile and test GNU libc.
24 * Running make install::        How to install it once you've got it
25  compiled.
26 * Tools for Compilation::       You'll need these first.
27 * Linux::                       Specific advice for GNU/Linux systems.
28 * Reporting Bugs::              So they'll get fixed.
29 @end menu
30
31 @node Configuring and compiling
32 @appendixsec Configuring and compiling GNU Libc
33 @cindex configuring
34 @cindex compiling
35
36 GNU libc cannot be compiled in the source directory.  You must build
37 it in a separate build directory.  For example, if you have unpacked
38 the glibc sources in @file{/src/gnu/glibc-@var{version}}, create a directory
39 @file{/src/gnu/glibc-build} to put the object files in.  This allows
40 removing the whole build directory in case an error occurs, which is
41 the safest way to get a fresh start and should always be done.
42
43 From your object directory, run the shell script @file{configure} located
44 at the top level of the source tree.  In the scenario above, you'd type
45
46 @smallexample
47 $ ../glibc-@var{version}/configure @var{args@dots{}}
48 @end smallexample
49
50 Please note that even though you're building in a separate build
51 directory, the compilation needs to modify a few files in the source
52 directory, especially some files in the manual subdirectory.
53
54 @noindent
55 @code{configure} takes many options, but the only one that is usually
56 mandatory is @samp{--prefix}.  This option tells @code{configure}
57 where you want glibc installed.  This defaults to @file{/usr/local},
58 but the normal setting to install as the standard system library is
59 @samp{--prefix=/usr} for GNU/Linux systems and @samp{--prefix=} (an
60 empty prefix) for GNU/Hurd systems.
61
62 It may also be useful to set the @var{CC} and @var{CFLAGS} variables in
63 the environment when running @code{configure}.  @var{CC} selects the C
64 compiler that will be used, and @var{CFLAGS} sets optimization options
65 for the compiler.
66
67 The following list describes all of the available options for
68  @code{configure}:
69
70 @table @samp
71 @item --prefix=@var{directory}
72 Install machine-independent data files in subdirectories of
73 @file{@var{directory}}.  The default is to install in @file{/usr/local}.
74
75 @item --exec-prefix=@var{directory}
76 Install the library and other machine-dependent files in subdirectories
77 of @file{@var{directory}}.  The default is to the @samp{--prefix}
78 directory if that option is specified, or @file{/usr/local} otherwise.
79
80 @item --with-headers=@var{directory}
81 Look for kernel header files in @var{directory}, not
82 @file{/usr/include}.  Glibc needs information from the kernel's header
83 files describing the interface to the kernel.  Glibc will normally
84 look in @file{/usr/include} for them,
85 but if you specify this option, it will look in @var{DIRECTORY} instead.
86
87 This option is primarily of use on a system where the headers in
88 @file{/usr/include} come from an older version of glibc.  Conflicts can
89 occasionally happen in this case.  You can also use this option if you want to
90 compile glibc with a newer set of kernel headers than the ones found in
91 @file{/usr/include}.
92
93 @item --enable-add-ons[=@var{list}]
94 Specify add-on packages to include in the build.  If this option is
95 specified with no list, it enables all the add-on packages it finds in
96 the main source directory; this is the default behavior.  You may
97 specify an explicit list of add-ons to use in @var{list}, separated by
98 spaces or commas (if you use spaces, remember to quote them from the
99 shell).  Each add-on in @var{list} can be an absolute directory name
100 or can be a directory name relative to the main source directory, or
101 relative to the build directory (that is, the current working directory).
102 For example, @samp{--enable-add-ons=nptl,../glibc-libidn-@var{version}}.
103
104 @item --enable-kernel=@var{version}
105 This option is currently only useful on GNU/Linux systems.  The
106 @var{version} parameter should have the form X.Y.Z and describes the
107 smallest version of the Linux kernel the generated library is expected
108 to support.  The higher the @var{version} number is, the less
109 compatibility code is added, and the faster the code gets.
110
111 @item --with-binutils=@var{directory}
112 Use the binutils (assembler and linker) in @file{@var{directory}}, not
113 the ones the C compiler would default to.  You can use this option if
114 the default binutils on your system cannot deal with all the constructs
115 in the GNU C library.  In that case, @code{configure} will detect the
116 problem and suppress these constructs, so that the library will still be
117 usable, but functionality may be lost---for example, you can't build a
118 shared libc with old binutils.
119
120 @item --without-fp
121 Use this option if your computer lacks hardware floating-point support
122 and your operating system does not emulate an FPU.
123
124 @c disable static doesn't work currently
125 @c @item --disable-static
126 @c Don't build static libraries.  Static libraries aren't that useful these
127 @c days, but we recommend you build them in case you need them.
128
129 @item --disable-shared
130 Don't build shared libraries even if it is possible.  Not all systems
131 support shared libraries; you need ELF support and (currently) the GNU
132 linker.
133
134 @item --disable-profile
135 Don't build libraries with profiling information.  You may want to use
136 this option if you don't plan to do profiling.
137
138 @item --disable-versioning
139 Don't compile the shared libraries with symbol version information.
140 Doing this will make the resulting library incompatible with old
141 binaries, so it's not recommended.
142
143 @item --enable-static-nss
144 Compile static versions of the NSS (Name Service Switch) libraries.
145 This is not recommended because it defeats the purpose of NSS; a program
146 linked statically with the NSS libraries cannot be dynamically
147 reconfigured to use a different name database.
148
149 @item --without-tls
150 By default the C library is built with support for thread-local storage
151 if the used tools support it.  By using @samp{--without-tls} this can be
152 prevented though there generally is no reason since it creates
153 compatibility problems.
154
155 @item --build=@var{build-system}
156 @itemx --host=@var{host-system}
157 These options are for cross-compiling.  If you specify both options and
158 @var{build-system} is different from @var{host-system}, @code{configure}
159 will prepare to cross-compile glibc from @var{build-system} to be used
160 on @var{host-system}.  You'll probably need the @samp{--with-headers}
161 option too, and you may have to override @var{configure}'s selection of
162 the compiler and/or binutils.
163
164 If you only specify @samp{--host}, @code{configure} will prepare for a
165 native compile but use what you specify instead of guessing what your
166 system is. This is most useful to change the CPU submodel.  For example,
167 if @code{configure} guesses your machine as @code{i586-pc-linux-gnu} but
168 you want to compile a library for 386es, give
169 @samp{--host=i386-pc-linux-gnu} or just @samp{--host=i386-linux} and add
170 the appropriate compiler flags (@samp{-mcpu=i386} will do the trick) to
171 @var{CFLAGS}.
172
173 If you specify just @samp{--build}, @code{configure} will get confused.
174 @end table
175
176 To build the library and related programs, type @code{make}.  This will
177 produce a lot of output, some of which may look like errors from
178 @code{make} but isn't.  Look for error messages from @code{make}
179 containing @samp{***}.  Those indicate that something is seriously wrong.
180
181 The compilation process can take a long time, depending on the
182 configuration and the speed of your machine.  Some complex modules may
183 take a very long time to compile, as much as several minutes on slower
184 machines.  Do not panic if the compiler appears to hang.
185
186 If you want to run a parallel make, simply pass the @samp{-j} option
187 with an appropriate numeric parameter to @code{make}.  You need a recent
188 GNU @code{make} version, though.
189
190 To build and run test programs which exercise some of the library
191 facilities, type @code{make check}.  If it does not complete
192 successfully, do not use the built library, and report a bug after
193 verifying that the problem is not already known.  @xref{Reporting Bugs},
194 for instructions on reporting bugs.  Note that some of the tests assume
195 they are not being run by @code{root}.  We recommend you compile and
196 test glibc as an unprivileged user.
197
198 Before reporting bugs make sure there is no problem with your system.
199 The tests (and later installation) use some pre-existing files of the
200 system such as @file{/etc/passwd}, @file{/etc/nsswitch.conf} and others.
201 These files must all contain correct and sensible content.
202
203 To format the @cite{GNU C Library Reference Manual} for printing, type
204 @w{@code{make dvi}}.  You need a working @TeX{} installation to do this.
205 The distribution already includes the on-line formatted version of the
206 manual, as Info files.  You can regenerate those with @w{@code{make
207 info}}, but it shouldn't be necessary.
208
209 The library has a number of special-purpose configuration parameters
210 which you can find in @file{Makeconfig}.  These can be overwritten with
211 the file @file{configparms}.  To change them, create a
212 @file{configparms} in your build directory and add values as appropriate
213 for your system.  The file is included and parsed by @code{make} and has
214 to follow the conventions for makefiles.
215
216 It is easy to configure the GNU C library for cross-compilation by
217 setting a few variables in @file{configparms}.  Set @code{CC} to the
218 cross-compiler for the target you configured the library for; it is
219 important to use this same @code{CC} value when running
220 @code{configure}, like this: @samp{CC=@var{target}-gcc configure
221 @var{target}}.  Set @code{BUILD_CC} to the compiler to use for programs
222 run on the build system as part of compiling the library.  You may need to
223 set @code{AR} to cross-compiling versions of @code{ar}
224 if the native tools are not configured to work with
225 object files for the target you configured for.
226
227
228 @node Running make install
229 @appendixsec Installing the C Library
230 @cindex installing
231
232 To install the library and its header files, and the Info files of the
233 manual, type @code{env LANGUAGE=C LC_ALL=C make install}.  This will
234 build things, if necessary, before installing them; however, you should
235 still compile everything first.  If you are installing glibc as your
236 primary C library, we recommend that you shut the system down to
237 single-user mode first, and reboot afterward.  This minimizes the risk
238 of breaking things when the library changes out from underneath.
239
240 @samp{make install} will do the entire job of upgrading from a
241 previous installation of glibc 2.x.  There may sometimes be headers
242 left behind from the previous installation, but those are generally
243 harmless.  If you want to avoid leaving headers behind you can do
244 things in the following order.
245
246 You must first build the library (@samp{make}), optionally check it
247 (@samp{make check}), switch the include directories and then install
248 (@samp{make install}).  The steps must be done in this order.  Not moving
249 the directory before install will result in an unusable mixture of header
250 files from both libraries, but configuring, building, and checking the
251 library requires the ability to compile and run programs against the old
252 library.  The new @file{/usr/include}, after switching the include
253 directories and before installing the library should contain the Linux
254 headers, but nothing else.  If you do this, you will need to restore
255 any headers from non-glibc libraries youself after installing the
256 library.
257
258 You can install glibc somewhere other than where you configured it to go
259 by setting the @code{install_root} variable on the command line for
260 @samp{make install}.  The value of this variable is prepended to all the
261 paths for installation.  This is useful when setting up a chroot
262 environment or preparing a binary distribution.  The directory should be
263 specified with an absolute file name.
264
265 Glibc includes a daemon called @code{nscd}, which you
266 may or may not want to run.  @code{nscd} caches name service lookups; it
267 can dramatically improve performance with NIS+, and may help with DNS as
268 well.
269
270 One auxiliary program, @file{/usr/libexec/pt_chown}, is installed setuid
271 @code{root}.  This program is invoked by the @code{grantpt} function; it
272 sets the permissions on a pseudoterminal so it can be used by the
273 calling process.  This means programs like @code{xterm} and
274 @code{screen} do not have to be setuid to get a pty.  (There may be
275 other reasons why they need privileges.)  If you are using a 2.1 or
276 newer Linux kernel with the @code{devptsfs} or @code{devfs} filesystems
277 providing pty slaves, you don't need this program; otherwise you do.
278 The source for @file{pt_chown} is in @file{login/programs/pt_chown.c}.
279
280 After installation you might want to configure the timezone and locale
281 installation of your system.  The GNU C library comes with a locale
282 database which gets configured with @code{localedef}.  For example, to
283 set up a German locale with name @code{de_DE}, simply issue the command
284 @samp{localedef -i de_DE -f ISO-8859-1 de_DE}.  To configure all locales
285 that are supported by glibc, you can issue from your build directory the
286 command @samp{make localedata/install-locales}.
287
288 To configure the locally used timezone, set the @code{TZ} environment
289 variable.  The script @code{tzselect} helps you to select the right value.
290 As an example, for Germany, @code{tzselect} would tell you to use
291 @samp{TZ='Europe/Berlin'}.  For a system wide installation (the given
292 paths are for an installation with @samp{--prefix=/usr}), link the
293 timezone file which is in @file{/usr/share/zoneinfo} to the file
294 @file{/etc/localtime}.  For Germany, you might execute @samp{ln -s
295 /usr/share/zoneinfo/Europe/Berlin /etc/localtime}.
296
297 @node Tools for Compilation
298 @appendixsec Recommended Tools for Compilation
299 @cindex installation tools
300 @cindex tools, for installing library
301
302 We recommend installing the following GNU tools before attempting to
303 build the GNU C library:
304
305 @itemize @bullet
306 @item
307 GNU @code{make} 3.79 or newer
308
309 You need the latest version of GNU @code{make}.  Modifying the GNU C
310 Library to work with other @code{make} programs would be so difficult that
311 we recommend you port GNU @code{make} instead.  @strong{Really.}  We
312 recommend GNU @code{make} version 3.79.  All earlier versions have severe
313 bugs or lack features.
314
315 @item
316 GCC 4.3 or newer, GCC 4.6 recommended
317
318 GCC 4.3 or higher is required; as of this writing, GCC 4.6 is the
319 compiler we advise to use to build the GNU C library.
320
321 You can use whatever compiler you like to compile programs that use GNU
322 libc.
323
324 Check the FAQ for any special compiler issues on particular platforms.
325
326 @item
327 GNU @code{binutils} 2.15 or later
328
329 You must use GNU @code{binutils} (as and ld) to build the GNU C library.
330 No other assembler or linker has the necessary functionality at the
331 moment.
332
333 @item
334 GNU @code{texinfo} 3.12f
335
336 To correctly translate and install the Texinfo documentation you need
337 this version of the @code{texinfo} package.  Earlier versions do not
338 understand all the tags used in the document, and the installation
339 mechanism for the info files is not present or works differently.
340
341 @item
342 GNU @code{awk} 3.0, or higher
343
344 @code{Awk} is used in several places to generate files.
345 @code{gawk} 3.0 is known to work.
346
347 @item
348 Perl 5
349
350 Perl is not required, but it is used if present to test the
351 installation.  We may decide to use it elsewhere in the future.
352
353 @item
354 GNU @code{sed} 3.02 or newer
355
356 @code{Sed} is used in several places to generate files.  Most scripts work
357 with any version of @code{sed}.  The known exception is the script
358 @code{po2test.sed} in the @code{intl} subdirectory which is used to
359 generate @code{msgs.h} for the test suite.  This script works correctly
360 only with GNU @code{sed} 3.02.  If you like to run the test suite, you
361 should definitely upgrade @code{sed}.
362
363 @end itemize
364
365 @noindent
366 If you change any of the @file{configure.in} files you will also need
367
368 @itemize @bullet
369 @item
370 GNU @code{autoconf} 2.53 or higher
371 @end itemize
372
373 @noindent
374 and if you change any of the message translation files you will need
375
376 @itemize @bullet
377 @item
378 GNU @code{gettext} 0.10.36 or later
379 @end itemize
380
381 @noindent
382 You may also need these packages if you upgrade your source tree using
383 patches, although we try to avoid this.
384
385 @node Linux
386 @appendixsec Specific advice for GNU/Linux systems
387 @cindex kernel header files
388
389 If you are installing GNU libc on a GNU/Linux system, you need to have
390 the header files from a 2.6.19.1 or newer kernel around for reference.
391 These headers must be installed using @samp{make headers_install}; the
392 headers present in the kernel source directory are not suitable for
393 direct use by GNU libc.  You do not need to use that kernel, just have
394 its headers installed where glibc can access them, referred to here as
395 @var{install-directory}.  The easiest way to do this is to unpack it
396 in a directory such as @file{/usr/src/linux-@var{version}}.  In that
397 directory, run @samp{make headers_install
398 INSTALL_HDR_PATH=@var{install-directory}}.  Finally, configure glibc
399 with the option @samp{--with-headers=@var{install-directory}/include}.
400 Use the most recent kernel you can get your hands on.  (If you are
401 cross-compiling GNU libc, you need to specify
402 @samp{ARCH=@var{architecture}} in the @samp{make headers_install}
403 command, where @var{architecture} is the architecture name used by the
404 Linux kernel, such as @samp{x86} or @samp{powerpc}.)
405
406 After installing GNU libc, you may need to remove or rename
407 directories such as @file{/usr/include/linux} and
408 @file{/usr/include/asm}, and replace them with copies of directories
409 such as @file{linux} and @file{asm} from
410 @file{@var{install-directory}/include}.  All directories present in
411 @file{@var{install-directory}/include} should be copied, except that
412 GNU libc provides its own version of @file{/usr/include/scsi}; the
413 files provided by the kernel should be copied without replacing those
414 provided by GNU libc.  The @file{linux}, @file{asm} and
415 @file{asm-generic} directories are required to compile programs using
416 GNU libc; the other directories describe interfaces to the kernel but
417 are not required if not compiling programs using those interfaces.
418 You do not need to copy kernel headers if you did not specify an
419 alternate kernel header source using @samp{--with-headers}.
420
421 GNU/Linux expects some components of the libc installation to be in
422 @file{/lib} and some in @file{/usr/lib}.  This is handled automatically
423 if you configure glibc with @samp{--prefix=/usr}.  If you set some other
424 prefix or allow it to default to @file{/usr/local}, then all the
425 components are installed there.
426
427 You cannot use @code{nscd} with 2.0 kernels, due to bugs in the
428 kernel-side thread support.  @code{nscd} happens to hit these bugs
429 particularly hard, but you might have problems with any threaded
430 program.
431
432 @node Reporting Bugs
433 @appendixsec Reporting Bugs
434 @cindex reporting bugs
435 @cindex bugs, reporting
436
437 There are probably bugs in the GNU C library.  There are certainly
438 errors and omissions in this manual.  If you report them, they will get
439 fixed.  If you don't, no one will ever know about them and they will
440 remain unfixed for all eternity, if not longer.
441
442 It is a good idea to verify that the problem has not already been
443 reported.  Bugs are documented in two places: The file @file{BUGS}
444 describes a number of well known bugs and the bug tracking system has a
445 WWW interface at
446 @url{http://sources.redhat.com/bugzilla/}.  The WWW
447 interface gives you access to open and closed reports.  A closed report
448 normally includes a patch or a hint on solving the problem.
449
450 To report a bug, first you must find it.  With any luck, this will be the
451 hard part.  Once you've found a bug, make sure it's really a bug.  A
452 good way to do this is to see if the GNU C library behaves the same way
453 some other C library does.  If so, probably you are wrong and the
454 libraries are right (but not necessarily).  If not, one of the libraries
455 is probably wrong.  It might not be the GNU library.  Many historical
456 Unix C libraries permit things that we don't, such as closing a file
457 twice.
458
459 If you think you have found some way in which the GNU C library does not
460 conform to the ISO and POSIX standards (@pxref{Standards and
461 Portability}), that is definitely a bug.  Report it!
462
463 Once you're sure you've found a bug, try to narrow it down to the
464 smallest test case that reproduces the problem.  In the case of a C
465 library, you really only need to narrow it down to one library
466 function call, if possible.  This should not be too difficult.
467
468 The final step when you have a simple test case is to report the bug.
469 Do this using the WWW interface to the bug database.
470
471 If you are not sure how a function should behave, and this manual
472 doesn't tell you, that's a bug in the manual.  Report that too!  If the
473 function's behavior disagrees with the manual, then either the library
474 or the manual has a bug, so report the disagreement.  If you find any
475 errors or omissions in this manual, please report them to the
476 bug database.  If you refer to specific
477 sections of the manual, please include the section names for easier
478 identification.