The community wiki for GLIBC
The official and canonical GLIBC website is http://www.gnu.org/software/libc/
Glibc 2.33 is in development with an expected release of 2021-02-01.
Glibc 2.32 has been released!
Glibc 2.31 has been released!
Glibc 2.30 has been released!
Glibc 2.29 has been released!
Any Unix-like operating system needs a C library: the library which defines the "system calls" and other basic facilities such as fopen, malloc, printf, exit etc.
The GNU C Library is used as the C library in the GNU systems and most systems with the Linux kernel.
2.1. Project Goals
The GNU C Library is primarily designed to be a portable and high performance C library.
It follows all relevant standards including ISO C11 and POSIX.1-2008. It is also internationalized and has one of the most complete internationalization interfaces known.
A C library must be used together with a C compiler. We intend the GNU C Library to be usable with any ISO-conformant C compiler; however, for technical reasons, it requires a small number of additional compiler features. Glibc has been most extensively tested with the GNU Compiler Collection, and is also known to work with clang, the C compiler from the LLVM Project.
2.2. Project Features
- POSIX Threading
A History of Threading in GLIBC (todo) - Describes the GLIBC version history of POSIX NPTL as well as mutex and futex constructs.
- ... and more!
The history of Unix and various standards determine much of the interface of the C library. In general the GNU C library supports the ISO C and POSIX standards. We also try to support the features of popular Unix variants (including BSD and System V) when those do not conflict with the standards. Different compatibility modes (selectable when you compile an application) allow the peaceful coexistence of compatibility support for different varieties of Unix.
2.4. Editing the wiki
Owing to automated spammers we have switched to only allowing those people in the EditorGroup to participate in the wiki. If you would like to participate in the wiki please email your request to firstname.lastname@example.org or contact one of the editors in EditorGroup and have them vouch for you and add you to the list. If your user is not in the EditorGroup your account will be purged when we purge spam accounts out of the database. You should always have yourself added to EditorGroup as quickly as possible in order to participate in the wiki (and avoid being purged)! We are sorry for the inconvenience. Please help make the world a better place by helping prevent spam.
3. Obtaining the Official Source
The "Download" section of the GLIBC website contains instructions on obtaining the official sources for the latest GLIBC release.
You can obtain official tarballs from the standard location, ftp://ftp.gnu.org/gnu/glibc/.
Source snapshots are available from ftp://sourceware.org/pub/glibc/snapshots/.
The working source tree is located in GIT, look here for instructions.
Consult the GLIBC FAQ for common questions and answers.
If you wish to contribute to glibc please post your idea or patch to email@example.com for initial review.
glibc has maintainers for each architecture. Please CC them on any libc-alpha emails related to the architecture of your interest.
Developers with commit access should follow the committer checklist prior to pushing patches to the upstream source code repository.
5.2.1. Developer Resources
22.214.171.124. Community Resources
- The IRC channel is on Freenode at #glibc.
Linkers and Loaders - Slightly outdated but effectively the primer on the topic.
Computer Systems: A Programmer's Perspective - Chapter 7. Linkers is particularly helpful. A much updated text on the topics.
5.2.2. Standards and Documentation References
5.3. Release management
5.4. Website Maintenance
The current website maintenance procedure is documented here.
5.5. Internals Documentation
- Namespace control:
A somewhat out-of-date list of name patterns reserved for future use in each standard header.
When to use __-prefixed symbols
Conditional Code: PIC, SHARED, etc.
AddOns: Working with addon dirs
The glibc community had a BoF session at the GNU Tools Cauldron 2018.
The glibc community had a BoF session at the GNU Tools Cauldron 2017.
The glibc community had a BoF session at the GNU Tools Cauldron 2016.
The glibc community had a BoF session at the GNU Tools Cauldron 2015.
The glibc community had a BoF session at the GNU Tools Cauldron 2014.
The glibc community had a BoF session at the GNU Tools Cauldron 2013.
5.7. Issue Tracking
We use the sourceware.org Bugzilla instance for bug tracking, sometimes referred to as “swbz”.
Do you want to help with GLIBC? The GLIBC Bug Triage initiative is a great way to get involved.
If you think the GLIBC bugzilla version selection drop-down is missing a version number, please contact libc-help < firstname.lastname@example.org >.
If you think that bugs aren't being fixed fast enough or that new features aren't being implemented fast enough, please take the time to read this email http://sourceware.org/ml/libc-help/2008-08/msg00009.html
5.10. Tips and Tricks
Another recipe for intercepting syscalls and providing your own version of FOO (instructions specifically for Ubuntu Linux systems).
The Plash project has some hints about GLIBC (mainly about build issues).
rtldi can be used to install multiple versions of GLIBC simultaneously (specifically, multiple versions of the dynamic linker, ld.so).
5.11. Project TODO
We have one master TODO list. The links below are pages dedicated to specific entries in the master list.
5.11.1. Project Wishlist by Developer
If you are looking for a GLIBC project this is the place to start.
5.11.2. Old Notes
These are old notes that used to be kept in the source tree. They have not been updated in many years. Some information may still be relevant, but please check whether it still is before acting on it.
5.12. Project Ports
Currently GLIBC only works with Linux and the Hurd, but we are willing to consider adding support other operating systems, as long as there are both user demand and developers willing to maintain the port.
5.12.1. External Ports
5.12.2. How to Submit a New Port
Section Porting on http://www.gnu.org/software/libc/development.html
We look forward to your feedback! Any feedback or questions related to glibc usage may be sent to email@example.com .