The community wiki for GLIBC
The official and canonical GLIBC website is http://www.gnu.org/software/libc/
1. 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.
1.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.
1.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!
1.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.
1.4. Editing the wiki
Owing to automated spammers we have switched to only allowing those people in the EditorGroup to edit 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. We are sorry for the inconvenience. Please help make the world a better place by helping prevent spam.
2. 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.
3. FAQ
Consult the GLIBC FAQ for common questions and answers.
4. Development
4.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.
4.2. Resources
4.2.1. Developer Resources
- The IRC channel is on Freenode at #glibc.
Regenerating and updating files not maintained as source in glibc
4.2.2. Standards and Documentation References
4.3. Release management
4.4. Internals Documentation
PTR_MANGLE & friends: http://udrepper.livejournal.com/13393.html
Namespace control: __-prefixed symbols
Conditional Code: PIC, SHARED, etc.
AddOns: Working with addon dirs
4.5. Issue Tracking
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
4.6. Testing
4.7. Debugging
4.8. 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).
4.8.1. Project TODO
We have one master TODO list. The links below are pages dedicated to specific entries in the master list.
4.9. Project Wishlist by Developer
If you are looking for a GLIBC project this is the place to start.
4.10. Website Maintenance
The current website maintenance procedure is documented here.
4.11. Project Ports
4.11.1. External
4.11.2. How to Submit a New Port
Section Porting on http://www.gnu.org/software/libc/development.html
5. Feedback
We look forward to your feedback! Please be aware that this wiki uses text captchas to deter spam. If you have any problems answering the text captchas please contact libc-help@sourceware.org.
Feedback and GLIBC Wiki FAQ - Leave a question about GLIBC here and a developer may answer it.
GLIBC Wiki TODO List - A list of suggestions for improving the quality and breadth of the GLIBC wiki.