library will still be usable, but functionality may be lost--for
example, you can't build a shared libc with old binutils.
-'--with-default-link'
- With '--with-default-link', the build system does not use a custom
- linker script for linking shared objects. The default is
- '--without-default-link', because the custom linker script is
- needed for full RELRO protection.
-
'--with-nonshared-cflags=CFLAGS'
Use additional compiler flags CFLAGS to build the parts of the
library which are always statically linked into applications and
compiler flags which target a later instruction set architecture
(ISA).
-'--with-extra-version-id=STRING'
- Use STRING as part of the fingerprint that is used by the dynamic
- linker to detect an incompatible version of 'libc.so'. For
- example, STRING could be the full package version and release
- string used by a distribution build of the GNU C Library. This
- way, concurrent process creation during a package update will fail
- with an error message, _error while loading shared libraries:
- /lib64/libc.so.6: ld.so/libc.so mismatch detected (upgrade in
- progress?)_, rather than crashing mysteriously.
-
'--with-timeoutfactor=NUM'
Specify an integer NUM to scale the timeout of test programs. This
factor can be changed at run time using 'TIMEOUTFACTOR' environment
indirect branch tracking (IBT) and shadow stack (SHSTK). When CET
is enabled, the GNU C Library is compatible with all existing
executables and shared libraries. This feature is currently
- supported on i386, x86_64 and x32 with GCC 8 and binutils 2.29 or
- later. Note that when CET is enabled, the GNU C Library requires
- CPUs capable of multi-byte NOPs, like x86-64 processors as well as
- Intel Pentium Pro or newer. With '--enable-cet', it is an error to
- dlopen a non CET enabled shared library in CET enabled application.
- With '--enable-cet=permissive', CET is disabled when dlopening a
- non CET enabled shared library in CET enabled application.
-
- NOTE: '--enable-cet' has been tested for i686, x86_64 and x32 on
- non-CET processors. '--enable-cet' has been tested for i686,
- x86_64 and x32 on CET processors.
+ supported on x86_64 and x32 with GCC 8 and binutils 2.29 or later.
+ With '--enable-cet', it is an error to dlopen a non CET enabled
+ shared library in CET enabled application. With
+ '--enable-cet=permissive', CET is disabled when dlopening a non CET
+ enabled shared library in CET enabled application.
+
+ NOTE: '--enable-cet' is only supported on x86_64 and x32.
'--enable-memory-tagging'
Enable memory tagging support if the architecture supports it.
By default for x86_64, the GNU C Library is built with the vector
math library. Use this option to disable the vector math library.
-'--enable-tunables'
- Tunables support allows additional library parameters to be
- customized at runtime. This feature is enabled by default. This
- option can take the following values:
-
- 'yes'
- This is the default if no option is passed to configure. This
- enables tunables and selects the default frontend (currently
- 'valstring').
-
- 'no'
- This option disables tunables.
-
- 'valstring'
- This enables tunables and selects the 'valstring' frontend for
- tunables. This frontend allows users to specify tunables as a
- colon-separated list in a single environment variable
- 'GLIBC_TUNABLES'.
-
-'--disable-crypt'
- Do not install the passphrase-hashing library 'libcrypt' or the
- header file 'crypt.h'. 'unistd.h' will still declare the function
- 'crypt'. Using this option does not change the set of programs
- that may need to be linked with '-lcrypt'; it only means that the
- GNU C Library will not provide that library.
-
- This option is for hackers and distributions experimenting with
- independently-maintained implementations of libcrypt. It may
- become the default in a future release.
-
-'--disable-experimental-malloc'
- By default, a per-thread cache is enabled in 'malloc'. While this
- cache can be disabled on a per-application basis using tunables
- (set glibc.malloc.tcache_count to zero), this option can be used to
- remove it from the build completely.
-
'--disable-scv'
Disable using 'scv' instruction for syscalls. All syscalls will
use 'sc' instead, even if the kernel supports 'scv'. PowerPC only.
the GNU C Library. The default value refers to the main
bug-reporting information for the GNU C Library.
+'--enable-fortify-source'
+'--enable-fortify-source=LEVEL'
+ Use -D_FORTIFY_SOURCE='LEVEL' to control hardening in the GNU C
+ Library. If not provided, 'LEVEL' defaults to highest possible
+ value supported by the build compiler.
+
+ Default is to disable fortification.
+
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 aren't. Look for error messages from 'make' containing '***'.
* GNU 'make' 4.0 or newer
- As of relase time, GNU 'make' 4.3 is the newest verified to work to
- build the GNU C Library.
+ As of release time, GNU 'make' 4.4.1 is the newest verified to work
+ to build the GNU C Library.
* GCC 6.2 or newer
GCC 6.2 or higher is required. In general it is recommended to use
the newest version of the compiler that is known to work for
building the GNU C Library, as newer compilers usually produce
- better code. As of release time, GCC 12.1 is the newest compiler
+ better code. As of release time, GCC 13.2 is the newest compiler
verified to work to build the GNU C Library.
For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
For s390x architecture builds, GCC 7.1 or higher is needed (See gcc
Bug 98269).
+ For AArch64 architecture builds with mathvec enabled, GCC 10 or
+ higher is needed due to dependency on arm_sve.h.
+
For multi-arch support it is recommended to use a GCC which has
been built with support for GNU indirect functions. This ensures
that correct debugging information is generated for functions
You must use GNU 'binutils' (as and ld) to build the GNU C Library.
No other assembler or linker has the necessary functionality at the
- moment. As of release time, GNU 'binutils' 2.38 is the newest
+ moment. As of release time, GNU 'binutils' 2.42 is the newest
verified to work to build the GNU C Library.
For PowerPC 64-bits little-endian (powerpc64le), 'objcopy' is
need this version of the 'texinfo' package. Earlier versions do
not understand all the tags used in the document, and the
installation mechanism for the info files is not present or works
- differently. As of release time, 'texinfo' 6.8 is the newest
+ differently. As of release time, 'texinfo' 7.0.3 is the newest
verified to work to build the GNU C Library.
* GNU 'awk' 3.1.2, or higher
'awk' is used in several places to generate files. Some 'gawk'
extensions are used, including the 'asorti' function, which was
introduced in version 3.1.2 of 'gawk'. As of release time, 'gawk'
- version 5.1.1 is the newest verified to work to build the GNU C
+ version 5.2.2 is the newest verified to work to build the GNU C
Library.
* GNU 'bison' 2.7 or later
Perl is not required, but if present it is used in some tests and
the 'mtrace' program, to build the GNU C Library manual. As of
- release time 'perl' version 5.34.1 is the newest verified to work
+ release time 'perl' version 5.38.2 is the newest verified to work
to build the GNU C Library.
* GNU 'sed' 3.02 or newer
'Sed' is used in several places to generate files. Most scripts
work with any version of 'sed'. As of release time, 'sed' version
- 4.8 is the newest verified to work to build the GNU C Library.
+ 4.9 is the newest verified to work to build the GNU C Library.
* Python 3.4 or later
Python is required to build the GNU C Library. As of release time,
- Python 3.10.5 is the newest verified to work for building and
- testing the GNU C Library.
+ Python 3.11 is the newest verified to work for building and testing
+ the GNU C Library.
* PExpect 4.0
in your system. As of release time PExpect 4.8.0 is the newest
verified to work to test the pretty printers.
+ * The Python 'abnf' module.
+
+ This module is optional and used to verify some ABNF grammars in
+ the manual. Version 2.2.0 has been confirmed to work as expected.
+ A missing 'abnf' module does not reduce the test coverage of the
+ library itself.
+
* GDB 7.8 or later with support for Python 2.7/3.4 or later
GDB itself needs to be configured with Python support in order to
use the pretty printers. Notice that your system having Python
available doesn't imply that GDB supports it, nor that your
system's Python and GDB's have the same version. As of release
- time GNU 'debugger' 12.1 is the newest verified to work to test the
+ time GNU 'debugger' 13.2 is the newest verified to work to test the
pretty printers.
Unless Python, PExpect and GDB with Python support are present, the
If you change any of the 'configure.ac' files you will also need
- * GNU 'autoconf' 2.69 (exactly)
+ * GNU 'autoconf' 2.71 (exactly)
and if you change any of the message translation files you will need
* GNU 'gettext' 0.10.36 or later
- As of release time, GNU 'gettext' version 0.21 is the newest
+ As of release time, GNU 'gettext' version 0.21.1 is the newest
version verified to work to build the GNU C Library.
You may also need these packages if you upgrade your source tree using
If you are installing the GNU C Library on GNU/Linux systems, you need
to have the header files from a 3.2 or newer kernel around for
-reference. (For the ia64 architecture, you need version 3.2.18 or newer
-because this is the first version with support for the 'accept4' system
-call.) These headers must be installed using 'make headers_install';
-the headers present in the kernel source directory are not suitable for
-direct use by the GNU C Library. You do not need to use that kernel,
-just have its headers installed where the GNU C Library can access them,
-referred to here as INSTALL-DIRECTORY. The easiest way to do this is to
-unpack it in a directory such as '/usr/src/linux-VERSION'. In that
-directory, run 'make headers_install
+reference. These headers must be installed using 'make
+headers_install'; the headers present in the kernel source directory are
+not suitable for direct use by the GNU C Library. You do not need to
+use that kernel, just have its headers installed where the GNU C Library
+can access them, referred to here as INSTALL-DIRECTORY. The easiest way
+to do this is to unpack it in a directory such as
+'/usr/src/linux-VERSION'. In that directory, run 'make headers_install
INSTALL_HDR_PATH=INSTALL-DIRECTORY'. Finally, configure the GNU C
Library with the option '--with-headers=INSTALL-DIRECTORY/include'. Use
the most recent kernel you can get your hands on. (If you are
Library with '--prefix=/usr'. If you set some other prefix or allow it
to default to '/usr/local', then all the components are installed there.
- As of release time, Linux version 5.18 is the newest stable version
+ As of release time, Linux version 6.1.5 is the newest stable version
verified to work to build the GNU C Library.
Reporting Bugs