]> git.ipfire.org Git - thirdparty/glibc.git/blame - manual/install.texi
Document that --enable-static-pie implies PIE
[thirdparty/glibc.git] / manual / install.texi
CommitLineData
1f77f049 1@include macros.texi
8b748aed 2@include pkgvers.texi
3c20b9b6 3
d136c6dc 4@ifclear plain
3d2abe79 5@node Installation, Maintenance, Library Summary, Top
d136c6dc
SP
6@end ifclear
7
1f77f049
JM
8@c %MENU% How to install the GNU C Library
9@appendix Installing @theglibc{}
3c20b9b6 10
7ac30cc5 11Before you do anything else, you should read the FAQ at
a306c790 12@url{https://sourceware.org/glibc/wiki/FAQ}. It answers common
7ac30cc5
AJ
13questions and describes problems you may experience with compilation
14and installation.
3c20b9b6 15
00c1176b 16You will need recent versions of several GNU tools: definitely GCC and
fe959e1e 17GNU Make, and possibly others. @xref{Tools for Compilation}, below.
00c1176b 18
ee0a148a 19@ifclear plain
00c1176b
UD
20@menu
21* Configuring and compiling:: How to compile and test GNU libc.
a4d62195
UD
22* Running make install:: How to install it once you've got it
23 compiled.
00c1176b 24* Tools for Compilation:: You'll need these first.
90d1d40b 25* Linux:: Specific advice for GNU/Linux systems.
00c1176b
UD
26* Reporting Bugs:: So they'll get fixed.
27@end menu
ee0a148a 28@end ifclear
00c1176b
UD
29
30@node Configuring and compiling
1f77f049 31@appendixsec Configuring and compiling @theglibc{}
1792d4db
UD
32@cindex configuring
33@cindex compiling
00c1176b 34
1f77f049 35@Theglibc{} cannot be compiled in the source directory. You must build
3858bf28 36it in a separate build directory. For example, if you have unpacked
1f77f049
JM
37the @glibcadj{} sources in @file{/src/gnu/glibc-@var{version}},
38create a directory
e8b1163e 39@file{/src/gnu/glibc-build} to put the object files in. This allows
3858bf28
RM
40removing the whole build directory in case an error occurs, which is
41the safest way to get a fresh start and should always be done.
00c1176b 42
a4d62195 43From your object directory, run the shell script @file{configure} located
00c1176b
UD
44at the top level of the source tree. In the scenario above, you'd type
45
46@smallexample
f1e86fca 47$ ../glibc-@var{version}/configure @var{args@dots{}}
00c1176b
UD
48@end smallexample
49
3858bf28 50Please note that even though you're building in a separate build
e6bdb741
AJ
51directory, the compilation may need to create or modify files and
52directories in the source directory.
f76d7052 53
00c1176b 54@noindent
3858bf28
RM
55@code{configure} takes many options, but the only one that is usually
56mandatory is @samp{--prefix}. This option tells @code{configure}
1f77f049 57where you want @theglibc{} installed. This defaults to @file{/usr/local},
3858bf28 58but the normal setting to install as the standard system library is
a7a93d50
JM
59@samp{--prefix=/usr} for @gnulinuxsystems{} and @samp{--prefix=} (an
60empty prefix) for @gnuhurdsystems{}.
00c1176b
UD
61
62It may also be useful to set the @var{CC} and @var{CFLAGS} variables in
63the environment when running @code{configure}. @var{CC} selects the C
64compiler that will be used, and @var{CFLAGS} sets optimization options
65for the compiler.
66
a4d62195
UD
67The following list describes all of the available options for
68 @code{configure}:
3c20b9b6
UD
69
70@table @samp
00c1176b
UD
71@item --prefix=@var{directory}
72Install 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}
76Install the library and other machine-dependent files in subdirectories
77of @file{@var{directory}}. The default is to the @samp{--prefix}
04b9968b 78directory if that option is specified, or @file{/usr/local} otherwise.
00c1176b
UD
79
80@item --with-headers=@var{directory}
81Look for kernel header files in @var{directory}, not
1f77f049
JM
82@file{/usr/include}. @Theglibc{} needs information from the kernel's header
83files describing the interface to the kernel. @Theglibc{} will normally
abd923db 84look in @file{/usr/include} for them,
04b9968b 85but if you specify this option, it will look in @var{DIRECTORY} instead.
00c1176b
UD
86
87This option is primarily of use on a system where the headers in
1f77f049 88@file{/usr/include} come from an older version of @theglibc{}. Conflicts can
02c4bbad 89occasionally happen in this case. You can also use this option if you want to
1f77f049 90compile @theglibc{} with a newer set of kernel headers than the ones found in
00c1176b
UD
91@file{/usr/include}.
92
d2830ba4 93@item --enable-kernel=@var{version}
a7a93d50 94This option is currently only useful on @gnulinuxsystems{}. The
d2830ba4
UD
95@var{version} parameter should have the form X.Y.Z and describes the
96smallest version of the Linux kernel the generated library is expected
97to support. The higher the @var{version} number is, the less
98compatibility code is added, and the faster the code gets.
99
3c20b9b6
UD
100@item --with-binutils=@var{directory}
101Use the binutils (assembler and linker) in @file{@var{directory}}, not
a4d62195 102the ones the C compiler would default to. You can use this option if
3c20b9b6 103the default binutils on your system cannot deal with all the constructs
1f77f049 104in @theglibc{}. In that case, @code{configure} will detect the
a4d62195
UD
105problem and suppress these constructs, so that the library will still be
106usable, but functionality may be lost---for example, you can't build a
107shared libc with old binutils.
3c20b9b6 108
b5ca0fb0
UD
109@c disable static doesn't work currently
110@c @item --disable-static
fb06851d 111@c Don't build static libraries. Static libraries aren't that useful these
b5ca0fb0 112@c days, but we recommend you build them in case you need them.
3c20b9b6 113
00c1176b 114@item --disable-shared
a4d62195
UD
115Don't build shared libraries even if it is possible. Not all systems
116support shared libraries; you need ELF support and (currently) the GNU
117linker.
3c20b9b6 118
9d7a3741
L
119@item --enable-static-pie
120Enable static position independent executable (static PIE) support.
121Static PIE is similar to static executable, but can be loaded at any
122address without help from a dynamic linker. All static programs as
123well as static tests are built as static PIE, except for those marked
124with no-pie. The resulting glibc can be used with the GCC option,
125-static-pie, which is available with GCC 8 or above, to create static
126adc89
L
126PIE. This option also implies that glibc programs and tests are created
127as dynamic position independent executables (PIE) by default.
9d7a3741 128
00c1176b
UD
129@item --disable-profile
130Don't build libraries with profiling information. You may want to use
131this option if you don't plan to do profiling.
f12944ec 132
00c1176b
UD
133@item --enable-static-nss
134Compile static versions of the NSS (Name Service Switch) libraries.
135This is not recommended because it defeats the purpose of NSS; a program
136linked statically with the NSS libraries cannot be dynamically
137reconfigured to use a different name database.
138
740b3dbe
L
139@item --enable-hardcoded-path-in-tests
140By default, dynamic tests are linked to run with the installed C library.
141This option hardcodes the newly built C library path in dynamic tests
142so that they can be invoked directly.
143
1cba4036
MF
144@item --disable-timezone-tools
145By default, timezone related utilities (@command{zic}, @command{zdump},
44f826e3 146and @command{tzselect}) are installed with @theglibc{}. If you are building
1cba4036 147these independently (e.g. by using the @samp{tzcode} package), then this
44f826e3 148option will allow disabling the install of these.
1cba4036
MF
149
150Note that you need to make sure the external tools are kept in sync with
151the versions that @theglibc{} expects as the data formats may change over
152time. Consult the @file{timezone} subdirectory for more details.
153
03baef1c
NA
154@item --enable-stack-protector
155@itemx --enable-stack-protector=strong
156@itemx --enable-stack-protector=all
157Compile the C library and all other parts of the glibc package
158(including the threading and math libraries, NSS modules, and
159transliteration modules) using the GCC @option{-fstack-protector},
160@option{-fstack-protector-strong} or @option{-fstack-protector-all}
161options to detect stack overruns. Only the dynamic linker and a small
162number of routines called directly from assembler are excluded from this
163protection.
164
2d6ab5df
FW
165@item --enable-bind-now
166Disable lazy binding for installed shared objects. This provides
167additional security hardening because it enables full RELRO and a
168read-only global offset table (GOT), at the cost of slightly increased
169program load times.
170
e4608715
CD
171@pindex pt_chown
172@findex grantpt
173@item --enable-pt_chown
174The file @file{pt_chown} is a helper binary for @code{grantpt}
175(@pxref{Allocation, Pseudo-Terminals}) that is installed setuid root to
176fix up pseudo-terminal ownership. It is not built by default because
177systems using the Linux kernel are commonly built with the @code{devpts}
178filesystem enabled and mounted at @file{/dev/pts}, which manages
179pseudo-terminal ownership automatically. By using
180@samp{--enable-pt_chown}, you may build @file{pt_chown} and install it
181setuid and owned by @code{root}. The use of @file{pt_chown} introduces
182additional security risks to the system and you should enable it only if
183you understand and accept those risks.
184
a4ecc9eb
JM
185@item --disable-werror
186By default, @theglibc{} is built with @option{-Werror}. If you wish
187to build without this option (for example, if building with a newer
188version of GCC than this version of @theglibc{} was tested with, so
189new warnings cause the build with @option{-Werror} to fail), you can
190configure with @option{--disable-werror}.
191
21933112 192@item --disable-mathvec
b55a155f
RJ
193By default for x86_64, @theglibc{} is built with the vector math library.
194Use this option to disable the vector math library.
21933112 195
67e58f39
SP
196@item --enable-tunables
197Tunables support allows additional library parameters to be customized at
2c0b90ab
SP
198runtime. This feature is enabled by default. This option can take the
199following values:
6765d5d3
SP
200
201@table @code
6765d5d3 202@item yes
2c0b90ab 203This is the default if no option is passed to configure. This enables tunables
6765d5d3
SP
204and selects the default frontend (currently @samp{valstring}).
205
2c0b90ab
SP
206@item no
207This option disables tunables.
208
6765d5d3
SP
209@item valstring
210This enables tunables and selects the @samp{valstring} frontend for tunables.
211This frontend allows users to specify tunables as a colon-separated list in a
212single environment variable @env{GLIBC_TUNABLES}.
213@end table
67e58f39 214
1e4d83f6
TK
215@item --enable-obsolete-nsl
216By default, libnsl is only built as shared library for backward
217compatibility and the NSS modules libnss_compat, libnss_nis and
218libnss_nisplus are not built at all.
219Use this option to enable libnsl with all depending NSS modules and
220header files.
221
d5c3fafc
DD
222@item --disable-experimental-malloc
223By default, a per-thread cache is enabled in @code{malloc}. While
224this cache can be disabled on a per-application basis using tunables
225(set glibc.malloc.tcache_count to zero), this option can be used to
226remove it from the build completely.
227
00c1176b
UD
228@item --build=@var{build-system}
229@itemx --host=@var{host-system}
04b9968b 230These options are for cross-compiling. If you specify both options and
00c1176b 231@var{build-system} is different from @var{host-system}, @code{configure}
1f77f049 232will prepare to cross-compile @theglibc{} from @var{build-system} to be used
00c1176b
UD
233on @var{host-system}. You'll probably need the @samp{--with-headers}
234option too, and you may have to override @var{configure}'s selection of
235the compiler and/or binutils.
236
a4d62195
UD
237If you only specify @samp{--host}, @code{configure} will prepare for a
238native compile but use what you specify instead of guessing what your
cf822e3c 239system is. This is most useful to change the CPU submodel. For example,
e98cdb38
CD
240if @code{configure} guesses your machine as @code{i686-pc-linux-gnu} but
241you want to compile a library for 586es, give
242@samp{--host=i586-pc-linux-gnu} or just @samp{--host=i586-linux} and add
243the appropriate compiler flags (@samp{-mcpu=i586} will do the trick) to
a4d62195 244@var{CFLAGS}.
1792d4db 245
a4d62195 246If you specify just @samp{--build}, @code{configure} will get confused.
8b748aed
JM
247
248@item --with-pkgversion=@var{version}
249Specify a description, possibly including a build number or build
250date, of the binaries being built, to be included in
251@option{--version} output from programs installed with @theglibc{}.
252For example, @option{--with-pkgversion='FooBar GNU/Linux glibc build
253123'}. The default value is @samp{GNU libc}.
254
255@item --with-bugurl=@var{url}
256Specify the URL that users should visit if they wish to report a bug,
257to be included in @option{--help} output from programs installed with
258@theglibc{}. The default value refers to the main bug-reporting
259information for @theglibc{}.
3c20b9b6
UD
260@end table
261
00c1176b
UD
262To build the library and related programs, type @code{make}. This will
263produce a lot of output, some of which may look like errors from
b55a155f 264@code{make} but aren't. Look for error messages from @code{make}
a4d62195 265containing @samp{***}. Those indicate that something is seriously wrong.
00c1176b 266
3858bf28
RM
267The compilation process can take a long time, depending on the
268configuration and the speed of your machine. Some complex modules may
269take a very long time to compile, as much as several minutes on slower
270machines. Do not panic if the compiler appears to hang.
3c20b9b6 271
8eadd4f3
UD
272If you want to run a parallel make, simply pass the @samp{-j} option
273with an appropriate numeric parameter to @code{make}. You need a recent
274GNU @code{make} version, though.
f12944ec 275
04b9968b
UD
276To build and run test programs which exercise some of the library
277facilities, type @code{make check}. If it does not complete
278successfully, do not use the built library, and report a bug after
279verifying that the problem is not already known. @xref{Reporting Bugs},
280for instructions on reporting bugs. Note that some of the tests assume
281they are not being run by @code{root}. We recommend you compile and
1f77f049 282test @theglibc{} as an unprivileged user.
3c20b9b6 283
8eadd4f3 284Before reporting bugs make sure there is no problem with your system.
a4d62195 285The tests (and later installation) use some pre-existing files of the
8eadd4f3
UD
286system such as @file{/etc/passwd}, @file{/etc/nsswitch.conf} and others.
287These files must all contain correct and sensible content.
288
d6fe5e58
JM
289Normally, @code{make check} will run all the tests before reporting
290all problems found and exiting with error status if any problems
291occurred. You can specify @samp{stop-on-test-failure=y} when running
292@code{make check} to make the test run stop and exit with an error
293status immediately when a failure occurs.
294
23b5cae1
MG
295The @glibcadj{} pretty printers come with their own set of scripts for testing,
296which run together with the rest of the testsuite through @code{make check}.
297These scripts require the following tools to run successfully:
298
299@itemize @bullet
300@item
301Python 2.7.6/3.4.3 or later
302
303Python is required for running the printers' test scripts.
304
305@item PExpect 4.0
306
307The printer tests drive GDB through test programs and compare its output
308to the printers'. PExpect is used to capture the output of GDB, and should be
309compatible with the Python version in your system.
310
311@item
312GDB 7.8 or later with support for Python 2.7.6/3.4.3 or later
313
314GDB itself needs to be configured with Python support in order to use the
315pretty printers. Notice that your system having Python available doesn't imply
316that GDB supports it, nor that your system's Python and GDB's have the same
317version.
318@end itemize
319
320@noindent
321If these tools are absent, the printer tests will report themselves as
322@code{UNSUPPORTED}. Notice that some of the printer tests require @theglibc{}
323to be compiled with debugging symbols.
324
3c20b9b6 325To format the @cite{GNU C Library Reference Manual} for printing, type
6a4888ff
AJ
326@w{@code{make dvi}}. You need a working @TeX{} installation to do
327this. The distribution builds the on-line formatted version of the
328manual, as Info files, as part of the build process. You can build
329them manually with @w{@code{make info}}.
1792d4db 330
2e8048e5
UD
331The library has a number of special-purpose configuration parameters
332which you can find in @file{Makeconfig}. These can be overwritten with
333the file @file{configparms}. To change them, create a
334@file{configparms} in your build directory and add values as appropriate
335for your system. The file is included and parsed by @code{make} and has
336to follow the conventions for makefiles.
337
1f77f049 338It is easy to configure @theglibc{} for cross-compilation by
2e8048e5
UD
339setting a few variables in @file{configparms}. Set @code{CC} to the
340cross-compiler for the target you configured the library for; it is
341important to use this same @code{CC} value when running
342@code{configure}, like this: @samp{CC=@var{target}-gcc configure
a4d62195
UD
343@var{target}}. Set @code{BUILD_CC} to the compiler to use for programs
344run on the build system as part of compiling the library. You may need to
e9433893
UD
345set @code{AR} to cross-compiling versions of @code{ar}
346if the native tools are not configured to work with
df381762
JM
347object files for the target you configured for. When cross-compiling
348@theglibc{}, it may be tested using @samp{make check
349test-wrapper="@var{srcdir}/scripts/cross-test-ssh.sh @var{hostname}"},
350where @var{srcdir} is the absolute directory name for the main source
351directory and @var{hostname} is the host name of a system that can run
352the newly built binaries of @theglibc{}. The source and build
353directories must be visible at the same locations on both the build
354system and @var{hostname}.
2e8048e5 355
0eb69512
JM
356In general, when testing @theglibc{}, @samp{test-wrapper} may be set
357to the name and arguments of any program to run newly built binaries.
358This program must preserve the arguments to the binary being run, its
8540f6d2 359working directory and the standard input, output and error file
4acc27ed
RM
360descriptors. If @samp{@var{test-wrapper} env} will not work to run a
361program with environment variables set, then @samp{test-wrapper-env}
362must be set to a program that runs a newly built program with
363environment variable assignments in effect, those assignments being
364specified as @samp{@var{var}=@var{value}} before the name of the
365program to be run. If multiple assignments to the same variable are
366specified, the last assignment specified must take precedence.
367Similarly, if @samp{@var{test-wrapper} env -i} will not work to run a
368program with an environment completely empty of variables except those
369directly assigned, then @samp{test-wrapper-env-only} must be set; its
370use has the same syntax as @samp{test-wrapper-env}, the only
371difference in its semantics being starting with an empty set of
372environment variables rather than the ambient set.
0eb69512 373
2e8048e5 374
085320f5 375@node Running make install
1792d4db
UD
376@appendixsec Installing the C Library
377@cindex installing
3c20b9b6
UD
378
379To install the library and its header files, and the Info files of the
686554bf 380manual, type @code{make install}. This will
a4d62195 381build things, if necessary, before installing them; however, you should
1f77f049 382still compile everything first. If you are installing @theglibc{} as your
920e11e9
UD
383primary C library, we recommend that you shut the system down to
384single-user mode first, and reboot afterward. This minimizes the risk
385of breaking things when the library changes out from underneath.
1792d4db 386
02c4bbad 387@samp{make install} will do the entire job of upgrading from a
1f77f049
JM
388previous installation of @theglibc{} version 2.x. There may sometimes
389be headers
02c4bbad
JM
390left behind from the previous installation, but those are generally
391harmless. If you want to avoid leaving headers behind you can do
392things in the following order.
c559a3ca
UD
393
394You must first build the library (@samp{make}), optionally check it
395(@samp{make check}), switch the include directories and then install
396(@samp{make install}). The steps must be done in this order. Not moving
397the directory before install will result in an unusable mixture of header
398files from both libraries, but configuring, building, and checking the
399library requires the ability to compile and run programs against the old
02c4bbad
JM
400library. The new @file{/usr/include}, after switching the include
401directories and before installing the library should contain the Linux
402headers, but nothing else. If you do this, you will need to restore
1f77f049 403any headers from libraries other than @theglibc{} yourself after installing the
62075f0f 404library.
c559a3ca 405
a82a3db9
MS
406You can install @theglibc{} somewhere other than where you configured
407it to go by setting the @code{DESTDIR} GNU standard make variable on
408the command line for @samp{make install}. The value of this variable
409is prepended to all the paths for installation. This is useful when
410setting up a chroot environment or preparing a binary distribution.
411The directory should be specified with an absolute file name. Installing
412with the @code{prefix} and @code{exec_prefix} GNU standard make variables
413set is not supported.
1792d4db 414
1f77f049 415@Theglibc{} includes a daemon called @code{nscd}, which you
1792d4db
UD
416may or may not want to run. @code{nscd} caches name service lookups; it
417can dramatically improve performance with NIS+, and may help with DNS as
a0edd63e 418well.
1792d4db
UD
419
420One auxiliary program, @file{/usr/libexec/pt_chown}, is installed setuid
cdfc721b
AM
421@code{root} if the @samp{--enable-pt_chown} configuration option is used.
422This program is invoked by the @code{grantpt} function; it sets the
423permissions on a pseudoterminal so it can be used by the calling process.
424If you are using a Linux kernel with the @code{devpts} filesystem enabled
425and mounted at @file{/dev/pts}, you don't need this program.
3c20b9b6 426
d01d6319 427After installation you might want to configure the timezone and locale
1f77f049 428installation of your system. @Theglibc{} comes with a locale
d01d6319
UD
429database which gets configured with @code{localedef}. For example, to
430set up a German locale with name @code{de_DE}, simply issue the command
8fc1e2ca 431@samp{localedef -i de_DE -f ISO-8859-1 de_DE}. To configure all locales
1f77f049 432that are supported by @theglibc{}, you can issue from your build directory the
d01d6319
UD
433command @samp{make localedata/install-locales}.
434
a4d62195
UD
435To configure the locally used timezone, set the @code{TZ} environment
436variable. The script @code{tzselect} helps you to select the right value.
437As an example, for Germany, @code{tzselect} would tell you to use
438@samp{TZ='Europe/Berlin'}. For a system wide installation (the given
439paths are for an installation with @samp{--prefix=/usr}), link the
d01d6319
UD
440timezone file which is in @file{/usr/share/zoneinfo} to the file
441@file{/etc/localtime}. For Germany, you might execute @samp{ln -s
442/usr/share/zoneinfo/Europe/Berlin /etc/localtime}.
443
00c1176b
UD
444@node Tools for Compilation
445@appendixsec Recommended Tools for Compilation
3c20b9b6
UD
446@cindex installation tools
447@cindex tools, for installing library
448
449We recommend installing the following GNU tools before attempting to
1f77f049 450build @theglibc{}:
3c20b9b6
UD
451
452@itemize @bullet
453@item
2bbc70d5 454GNU @code{make} 3.79 or newer
3c20b9b6 455
1f77f049
JM
456You need the latest version of GNU @code{make}. Modifying @theglibc{}
457to work with other @code{make} programs would be so difficult that
a4d62195
UD
458we recommend you port GNU @code{make} instead. @strong{Really.} We
459recommend GNU @code{make} version 3.79. All earlier versions have severe
460bugs or lack features.
3c20b9b6
UD
461
462@item
4add8674 463GCC 4.9 or newer
0e7727f7 464
4add8674 465GCC 4.9 or higher is required. In general it is recommended to use
4863355a
JM
466the newest version of the compiler that is known to work for building
467@theglibc{}, as newer compilers usually produce better code. As of
15192aaa 468release time, GCC 7.1 is the newest compiler verified to work to build
4863355a 469@theglibc{}.
91ea72b7 470
4efe3ce4
GG
471For PowerPC 64-bits little-endian (powerpc64le), GCC 6.2 or higher is
472required. This compiler version is the first to provide the features
473required for building @theglibc{} with support for @code{_Float128}.
474
022dfdce
SL
475For multi-arch support it is recommended to use a GCC which has been built with
476support for GNU indirect functions. This ensures that correct debugging
477information is generated for functions selected by IFUNC resolvers. This
478support can either be enabled by configuring GCC with
479@samp{--enable-gnu-indirect-function}, or by enabling it by default by setting
480@samp{default_gnu_indirect_function} variable for a particular architecture in
481the GCC source file @file{gcc/config.gcc}.
482
1f77f049
JM
483You can use whatever compiler you like to compile programs that use
484@theglibc{}.
3c20b9b6 485
90d1d40b 486Check the FAQ for any special compiler issues on particular platforms.
5713a71e 487
3c20b9b6 488@item
073e8fa7 489GNU @code{binutils} 2.25 or later
00c1176b 490
1f77f049 491You must use GNU @code{binutils} (as and ld) to build @theglibc{}.
0c02c85f 492No other assembler or linker has the necessary functionality at the
15192aaa 493moment. As of release time, GNU @code{binutils} 2.27 is the newest
04cb913d 494verified to work to build @theglibc{}.
3c20b9b6
UD
495
496@item
3a12c70f 497GNU @code{texinfo} 4.7 or later
3c20b9b6
UD
498
499To correctly translate and install the Texinfo documentation you need
500this version of the @code{texinfo} package. Earlier versions do not
501understand all the tags used in the document, and the installation
1792d4db 502mechanism for the info files is not present or works differently.
2c8f75f7 503As of release time, @code{texinfo} 6.0 is the newest verified to work
04cb913d 504to build @theglibc{}.
3c20b9b6
UD
505
506@item
12086fb4 507GNU @code{awk} 3.1.2, or higher
00c1176b 508
12086fb4
RM
509@code{awk} is used in several places to generate files.
510Some @code{gawk} extensions are used, including the @code{asorti}
511function, which was introduced in version 3.1.2 of @code{gawk}.
2c8f75f7
CD
512As of release time, @code{gawk} version 4.1.3 is the newest verified
513to work to build @theglibc{}.
00c1176b 514
1faaf703
JB
515@item
516GNU @code{bison} 2.7 or later
517
518@code{bison} is used to generate the @code{yacc} parser code in the @file{intl}
519subdirectory.
520
00c1176b
UD
521@item
522Perl 5
523
524Perl is not required, but it is used if present to test the
525installation. We may decide to use it elsewhere in the future.
3c20b9b6 526
d66732e0
UD
527@item
528GNU @code{sed} 3.02 or newer
529
a4d62195 530@code{Sed} is used in several places to generate files. Most scripts work
2c8f75f7
CD
531with any version of @code{sed}. As of release time, @code{sed} version
5324.2.2 is the newest verified to work to build @theglibc{}.
d66732e0 533
3c20b9b6
UD
534@end itemize
535
536@noindent
cb8a6dbd 537If you change any of the @file{configure.ac} files you will also need
3c20b9b6
UD
538
539@itemize @bullet
540@item
f3f5d895 541GNU @code{autoconf} 2.69 (exactly)
3c20b9b6
UD
542@end itemize
543
544@noindent
545and if you change any of the message translation files you will need
546
547@itemize @bullet
548@item
c26b4f64 549GNU @code{gettext} 0.10.36 or later
3c20b9b6
UD
550@end itemize
551
cc8623f1 552
3c20b9b6
UD
553@noindent
554You may also need these packages if you upgrade your source tree using
555patches, although we try to avoid this.
556
1792d4db 557@node Linux
a7a93d50 558@appendixsec Specific advice for @gnulinuxsystems{}
1792d4db
UD
559@cindex kernel header files
560
a7a93d50 561If you are installing @theglibc{} on @gnulinuxsystems{}, you need to have
5b4ecd3f 562the header files from a 3.2 or newer kernel around for reference.
e9203023
FW
563(For the ia64 architecture, you need version 3.2.18 or newer because this
564is the first version with support for the @code{accept4} system call.)
abd923db
JM
565These headers must be installed using @samp{make headers_install}; the
566headers present in the kernel source directory are not suitable for
1f77f049
JM
567direct use by @theglibc{}. You do not need to use that kernel, just have
568its headers installed where @theglibc{} can access them, referred to here as
abd923db
JM
569@var{install-directory}. The easiest way to do this is to unpack it
570in a directory such as @file{/usr/src/linux-@var{version}}. In that
571directory, run @samp{make headers_install
1f77f049 572INSTALL_HDR_PATH=@var{install-directory}}. Finally, configure @theglibc{}
abd923db
JM
573with the option @samp{--with-headers=@var{install-directory}/include}.
574Use the most recent kernel you can get your hands on. (If you are
1f77f049 575cross-compiling @theglibc{}, you need to specify
abd923db
JM
576@samp{ARCH=@var{architecture}} in the @samp{make headers_install}
577command, where @var{architecture} is the architecture name used by the
578Linux kernel, such as @samp{x86} or @samp{powerpc}.)
a8d87c92 579
1f77f049 580After installing @theglibc{}, you may need to remove or rename
abd923db
JM
581directories such as @file{/usr/include/linux} and
582@file{/usr/include/asm}, and replace them with copies of directories
583such as @file{linux} and @file{asm} from
584@file{@var{install-directory}/include}. All directories present in
585@file{@var{install-directory}/include} should be copied, except that
1f77f049 586@theglibc{} provides its own version of @file{/usr/include/scsi}; the
abd923db 587files provided by the kernel should be copied without replacing those
1f77f049 588provided by @theglibc{}. The @file{linux}, @file{asm} and
abd923db 589@file{asm-generic} directories are required to compile programs using
1f77f049 590@theglibc{}; the other directories describe interfaces to the kernel but
abd923db
JM
591are not required if not compiling programs using those interfaces.
592You do not need to copy kernel headers if you did not specify an
593alternate kernel header source using @samp{--with-headers}.
1792d4db 594
a7a93d50
JM
595The Filesystem Hierarchy Standard for @gnulinuxsystems{} expects some
596components of the @glibcadj{} installation to be in
1792d4db 597@file{/lib} and some in @file{/usr/lib}. This is handled automatically
1f77f049 598if you configure @theglibc{} with @samp{--prefix=/usr}. If you set some other
1792d4db
UD
599prefix or allow it to default to @file{/usr/local}, then all the
600components are installed there.
601
3c20b9b6
UD
602@node Reporting Bugs
603@appendixsec Reporting Bugs
604@cindex reporting bugs
605@cindex bugs, reporting
606
1f77f049 607There are probably bugs in @theglibc{}. There are certainly
3c20b9b6
UD
608errors and omissions in this manual. If you report them, they will get
609fixed. If you don't, no one will ever know about them and they will
610remain unfixed for all eternity, if not longer.
611
04b9968b
UD
612It is a good idea to verify that the problem has not already been
613reported. Bugs are documented in two places: The file @file{BUGS}
8b748aed
JM
614describes a number of well known bugs and the central @glibcadj{}
615bug tracking system has a
612fdf25 616WWW interface at
a306c790 617@url{https://sourceware.org/bugzilla/}. The WWW
a4d62195
UD
618interface gives you access to open and closed reports. A closed report
619normally includes a patch or a hint on solving the problem.
612fdf25 620
a4d62195 621To report a bug, first you must find it. With any luck, this will be the
3c20b9b6 622hard part. Once you've found a bug, make sure it's really a bug. A
1f77f049 623good way to do this is to see if @theglibc{} behaves the same way
3c20b9b6
UD
624some other C library does. If so, probably you are wrong and the
625libraries are right (but not necessarily). If not, one of the libraries
1f77f049 626is probably wrong. It might not be @theglibc{}. Many historical
1792d4db
UD
627Unix C libraries permit things that we don't, such as closing a file
628twice.
629
1f77f049 630If you think you have found some way in which @theglibc{} does not
1792d4db
UD
631conform to the ISO and POSIX standards (@pxref{Standards and
632Portability}), that is definitely a bug. Report it!
3c20b9b6
UD
633
634Once you're sure you've found a bug, try to narrow it down to the
635smallest test case that reproduces the problem. In the case of a C
636library, you really only need to narrow it down to one library
637function call, if possible. This should not be too difficult.
638
639The final step when you have a simple test case is to report the bug.
8b748aed 640Do this at @value{REPORT_BUGS_TO}.
3c20b9b6
UD
641
642If you are not sure how a function should behave, and this manual
643doesn't tell you, that's a bug in the manual. Report that too! If the
644function's behavior disagrees with the manual, then either the library
645or the manual has a bug, so report the disagreement. If you find any
d40eb37a
UD
646errors or omissions in this manual, please report them to the
647bug database. If you refer to specific
04b9968b
UD
648sections of the manual, please include the section names for easier
649identification.