리눅스 API는 리눅스 커널의 시스템 콜 인터페이스, GNU C 라이브러리(GNU), libdrm, libalsa 그리고 libevdev (freedesktop.org)에 의해 구성된다.GNU C 라이브러리는 리눅스 커널의 시스템 호출을 래핑한다.리눅스 커널과 GNU C 라이브러리는 함께 리눅스 API를 형성한다. 컴파일 이후 바이너리는 ABI를 제공한다.
GNU C 라이브러리(GNU C Library)는 일반적으로 glibc로 알려진, GNU 프로젝트가 C 표준 라이브러리를 구현한 것이다. 이름과는 달리 현재는 C++도 지원한다. 이것은 1990년대 초반 자유 소프트웨어 재단(FSF)이 자신의 GNU 운영 체제를 위해 시작되었다.
Glibc 프로젝트는 초기의 1980년대에 FSF에서 일하던 Roland McGrath에 의해 대부분 쓰여졌다.
1988년 2월 FSF는 glibc를 ANSI C가 요구하는 기능을 거의 완벽하게 갖는다고 주장하였다.[3] 1992년 이것은 구현된 ANSI C-1989와 POSIX.1-1990을 가졌으며 POSIX.2의 방식으로 동작하였다.[4]
1995년 9월 Ulrich Drepper는 glibc 프로젝트에 대한 그의 첫 기여를 하였고 1990년대 들어 점차적으로 glibc의 핵심 기여자와 유지인이 되었다.[5] Drepper는 수 년동안 유지 관리를 하는 위치였으며 2012년 프로젝트의 전체 커밋 중 63%를 차지하였다.[6]
"리눅스 libc"의 분기
1990년대 초반 리눅스 커널의 개발자들은 glibc로 분기하였다. "리눅스 libc"로 불리는 이 분기는 릴리즈 버전 2부터 5까지 독립적으로 유지되었다.
FSF가 glibc 2.0을 릴리즈하였을 때 이것은 더 많은 완전한 POSIX 표준과 더 나은 국제화와 지역화, 다중언어 함수, IPv6 역량, 64비트 데이터 접근, 멀티스레드 애플리케이션을 위한 기능을 가졌으며 코드는 더 이식가능해졌다.[7] 이 시점에서 리눅스 커널 개발자들은 자신들의 분기를 중단하고 다시 FSF의 glibc로 돌아왔다.[8]
리눅스 libc의 최신 버전은 내부 이름(soname) libc.so.5를 가진다. 이 이후로 리눅스의 glibc 2.x는 soname libc.so.6를 사용한다.[9]
리처드 스톨만에 따르면, 코드의 저자가 불분명하고 GNU 프로젝트가 저작권과 저자를 기록하는 것에 엄격하기 때문에 리눅스 libc에서 만들어진 변화는 다시 glibc로 병합될 수 없다고 한다.[10]
운영 위원회의 설치
2001년부터 라이브러리의 개발은 위원회에 의해 감독되며[11], 특히 Ulrich Drepper[12]가 주요 기여자와 유지인으로서 활동한다.
git으로 전환
이전의 CVS 저장소 대신, 2009년 glibc는 Sourceware의 깃 저장소로 옮겼다.[13]
버전 역사
대부분의 시스템에서, glibc의 버전은 lib 파일을 실행함으로써 획득할 수 있다(예를 들면, /lib/libc.so.6).
glibc는 과거 리누스 토발즈[15]와 임베디드 리눅스 프로그래머들에 의해 크고 느리다는 비판을 받아왔다. 이 이유로 여러 대체 C 표준 라이브러리들이 만들어졌다. 대체 libcs로 Bionic (안드로이드[16]에서 사용되는), dietlibc, uClibc, Newlib, Klibc, 그리고 musl이 있다.
↑“GNU's Bulletin, vol. 1 no. 4, February, 1988”. Most libraries are done. Roland McGrath […] has a nearly complete set of ANSI C library functions. We hope they will be ready some time this spring.
↑“GNU's Bulletin, vol. 1 no. 12”. It now contains all of the ANSI C-1989 and POSIX.1-1990 functions, and work is in progress on POSIX.2 and Unix functions (BSD and System V)
↑Corbet, Jonathan (2012년 3월 28일). “A turning point for GNU libc”. LWN.net. Of the nearly 19,000 commits found in the project's git repository (which contains changes back to 1995), over 12,000 were made by Ulrich.
↑“Forking: it could even happen to you”. the split between GNU LIBC and the Linux LIBC -- it went on for years while Linux stabilized, and then the forks re-merged into one project
↑“glibc homepage”. In 2001 The GNU C Library Steering Committee …, was formed and currently consists of Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath and Andreas Schwab.