The community wiki for GLIBC
The official and canonical GLIBC website is http://www.gnu.org/software/libc/
The wiki is covered by the glibc Code of Conduct.
1. News
Glibc 2.41 is in development with an expected release of 2025-02-01.
Glibc 2.40 was released 2024-07-22!
Glibc 2.39 was released 2024-01-31!
Glibc 2.38 was released 2023-07-31!
Glibc 2.37 was released 2023-02-01!
Glibc 2.36 was released 2022-08-01!
Glibc 2.35 was released 2022-02-03!
Glibc 2.34 was released 2021-08-01!
Glibc 2.33 was released 2021-02-01!
2. Overview
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!
2.3. History
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 libc-alpha@sourceware.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 "Sources" 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/.
The working source tree is located in GIT, look here for instructions.
4. FAQ
Consult the GLIBC FAQ for common questions and answers.
5. Development
5.1. Contributing
If you wish to contribute to glibc please post your idea or patch to libc-help@sourceware.org for initial review.
Review the contribution checklist before emailing libc-alpha@sourceware.org with your contribution.
glibc has maintainers for each architecture. Please CC them on any libc-alpha emails related to the architecture of your interest.
For help subscribing to the mailing-lists, simply send an empty e-mail to libc-help-info@sourceware.org or libc-alpha-info@sourceware.org
Developers with commit access should follow the committer checklist prior to pushing patches to the upstream source code repository.
5.2. Resources
5.2.1. Developer Resources
5.2.1.1. Community Resources
- The IRC channel is on OFTC at #glibc along with other GNU Toolchain projects like #gcc.
Regenerating and updating files not maintained as source in glibc
5.2.1.2. Textbooks
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
POWER Architecture - Autovectorization of Functions Called Within Loops
5.6. Meetings
The glibc community had a BoF session at the GNU Tools track at LPC 2021.
The glibc community had a BoF session at the GNU Tools track at LPC 2020.
The glibc community had a BoF session at the GNU Tools Cauldron 2019.
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 < libc-help@sourceware.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.8. Testing
5.9. Debugging
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
6. Feedback
We look forward to your feedback! Any feedback or questions related to glibc usage may be sent to libc-help@sourceware.org .