C Standard Library - Implementations

Implementations

Unix-like systems typically have a C library in shared library form, but the header files (and compiler toolchain) may be absent from an installation so C development may not be possible. The C library is considered part of the operating system on Unix-like systems. The C functions, including the ISO C standard ones, are widely used by programs, and are regarded as if they were not only an implementation of something in the C language, but also de facto part of the operating system interface. Unix-like operating systems generally cannot function if the C library is erased.

By contrast, on Microsoft Windows, the core system dynamic libraries (DLLs) do not provide an implementation of the C standard library; this is provided by each compiler individually. Compiled applications written in C are either statically linked with a C library, or linked to a dynamic version of the library that is shipped with these applications, rather than relied upon to be present on the targeted systems. Functions in a compiler's C library are not regarded as interfaces to Microsoft Windows.

Many other implementations exist, provided with both various operating systems and C compilers.

Although there exist too many implementations to list, some popular implementations follow:

  • BSD libc, implementations distributed under BSD operating systems.
  • GNU C Library, used in GNU/Linux and GNU/HURD.
  • Microsoft C Run-time Library, part of Microsoft Visual C++
  • dietlibc, an alternative small implementation of the C standard library (MMU-less)
  • uClibc, a C standard library for embedded Linux systems (MMU-less)
  • Newlib, a C standard library for embedded systems (MMU-less)
  • klibc, primarily for booting Linux systems.
  • EGLIBC, variant of glibc for embedded systems.
  • musl, another lightweight C standard library implementation for Linux systems
  • Bionic, originally developed by Google for the Android embedded system operating system, derived from BSD libc.

Read more about this topic:  C Standard Library