.\" Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH GNU_GET_LIBC_VERSION 3 2021-03-22 "Linux" "Linux Programmer's Manual"
.SH NAME
gnu_get_libc_version, gnu_get_libc_release \- get glibc version and release
.SH SYNOPSIS
.nf
.B #include <gnu/libc\-version.h>
.PP
.B const char *gnu_get_libc_version(void);
.B const char *gnu_get_libc_release(void);
.fi
.SH DESCRIPTION
The function
.BR gnu_get_libc_version ()
returns a string that identifies the glibc version available on the system.
.PP
The function
.BR gnu_get_libc_release ()
returns a string indicates the release status of the glibc version
available on the system.
This will be a string such as
.IR "stable" .
.SH VERSIONS
These functions first appeared in glibc in version 2.1.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR gnu_get_libc_version (),
.BR gnu_get_libc_release ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
These functions are glibc-specific.
.SH EXAMPLES
When run, the program below will produce output such as the following:
.PP
.in +4n
.EX
.RB "$" " ./a.out"
GNU libc version: 2.8
GNU libc release: stable
.EE
.in
.SS Program source
\&
.EX
#include <gnu/libc\-version.h>
#include <stdlib.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    printf("GNU libc version: %s\en", gnu_get_libc_version());
    printf("GNU libc release: %s\en", gnu_get_libc_release());
    exit(EXIT_SUCCESS);
}
.EE
.SH SEE ALSO
.BR confstr (3)
