GNU C 라이브러리

모든 유닉스 호환 운영 체제에는 C 라이브러리가 필요하다. 이 라이브러리에는 "시스템 호출"과 기타 malloc 같은 기본 함수들이 정의되어 있다.

GNU C 라이브러리는 GNU 시스템의 C 라이브러리로 사용된다. 이 라이브러리의 수정된 버전이 현재 대부분의 리눅스 기반 GNU 시스템에서 C 라이브러리로 사용되고 있으며, 다음번 2.0 버전은 수정없이 GNU/리눅스 시스템에 사용될 예정이다.

C 라이브러리 인터페이스의 대부분은 역사적으로 유닉스와 여러 표준에 의해 결정된다. 일반적으로 GNU C 라이브러리는 ISO C와 POSIX 표준을 지원한다. 우리는 또한 표준과 충돌하지 않는 범위 내에서 대중적인 유닉스 시스템(BSD와 시스템 V 포함)의 기능들을 지원하려 하고 있다.

현재 GNU C 라이브러리는 거의 다 완성되었다. 다른 C 라이브러리에 있는 거의 모든 유용한 함수들이 사용 가능하다. 그렇지만 아직도 개선의 여지는 남아 있다. GNU C 라이브러리의 기능을 확장하거나 개선하고자 하는 분들은 아래 공개 작업란을 읽어 본 뒤 관리자와 작업을 협의하기 바란다.

GNU C 라이브러리는 이식이 가능하도록 설계되었다. 비록 라이브러리 소스는 매우 복잡하지만, configuremake 같은 간단한 명령으로 지원되는 모든 시스템에 대해 이 라이브러리를 만들어 낼 수 있다(물론 사용 중인 플랫폼이 지원된다고 가정하고). GNU libc를 기타 다른 시스템으로 이식하는 일에 관심이 있는 분들은 관리자에게 연락하기 바란다.

GNU C 라이브러리의 현재 상황

공식적인 마지막 버전은 1.09.1이다. 비교적 최근인 공개 날짜에도 불구하고, 이 버전은 매우 오래되었다. 1.09.1은 1.09 버전의 사소한 문제점 하나를 고친 것이다.

다음 버전은 2.0이 될 것이다. 버전 번호 앞자리가 새롭게 바뀌는 것은 주요한 변화와 몇년간에 걸친 작업의 결과를 반영한다. 1.09.1이 80년대 스타일의 정적 라이브러리였던 반면, 새 버전 2.0은 C 라이브러리에 최신 기술을 구현하고 있다. 아울러 새 버전은 가장 최신 표준 (ISO C/amendment 1, POSIX.1c, XPG4.2)을 따르고 있다. 또한 이것은 아직 완전한 국제화 인터페이스에 필요한 몇가지 함수가 빠져있긴 하지만 국제화되어 있다.

버전 2.0은 공유 라이브러리(사실은 여러 개의 공유 라이브러리)로 만들어진다. 라이브러리의 몇몇 부분들은 외부로 분리되어 있으며, 필요할 때 프로세스에 동적으로 결합된다.

사용 가능 여부

현재 GNU libc 버전 2.0의 *시험판이 나와 있다. 또한 같은 디렉토리에는 GNU libc와 함께 쓰일 수 있는 부가적인 패키지가 몇 가지 있다. 이들은 법적인 문제(암호화 소프트웨어의 수출 제한같은)나 GNU libc 개발자 그룹에 속해 있지 않은 사람들이 관리하고 있는 등의 이유로 인해 분리되어 배포된다.

현재 네 개의 부가 패키지가 나와 있다:

이 부가 프로그램들의 사용법은 FAQ을 참조하기 바란다.

지원되는 시스템

현재 지원되는 시스템의 명단은 그리 길지 않다. 버전 1.09.1는 훨씬 많은 시스템 상에서 지원되었지만, 이들 시스템으로의 이식에 관심있는 사람들은 최근엔 개발자 그룹에 참여하고 있지 않다. GNU C 라이브러리 2.0은 현재 다음과 같은 시스템을 지원한다:

버전 2의 개발 속도를 높히기 위해, 개발자들은 GNU 시스템(리눅스 기반과 허드 기반의)에 초점을 맞추고 있다. 실제로 현재의 버전 2는 예전에 지원되었던 유닉스 시스템 상에서는 동작하지 않을 것이다. 우리는 이러한 이식 문제를 해결해 줄 자원자를 찾고 있다.

GNU libc를 Solaris (아마도 SunOS까지), Irix, DEC 유닉스 (OSF/1), HP-UX와 같은 현대적인 시스템에 이식하는 일은 아마도 큰 문제없이 가능할 것이다. 그렇지만 Ultrix나 SysVr4 같은 오래된 시스템들은 GNU libc를 공유 라이브러리로 만들 수 없기 때문에 약간의 코드 손질이 필요하다. 하지만 이론적으론 완전한 정적 라이브러리를 동일한 소스로부터 만들어 내는 일이 가능하다.

공개 작업

참여한 사람들

GNU libc는 원래 Roland McGrath <roland@gnu.ai.mit.edu>가 FSF에서 일했을 때 만들었다. 현재의 GNU libc는 Ulrich Drepper <drepper@cygnus.com>이 관리하고 있다.

GNU 허드에 대한 지원은 부분적으로 Thomas Bushnell, n/BSG <thomas@gnu.ai.mt.edu>와 Miles Bader <miles@gnu.ai.mit.edu>에 의해 쓰여졌다. m68k 상의 GNU/리눅스로의 이식은 완료되었고 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>이 관리하고 있다. Alpha 상의 GNU/리눅스로의 이식은 Richard Henderson <rth@tamu.edu>와 David Mosberger-Tang <davidm@azstarnet.com>이 맡고 있다.


FSF와 GNU에 관한 질의와 질문은 gnu@prep.ai.mit.edu로 해주기 바랍니다.

저작권 (C) 1996 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

갱신: 22 Jan 1997 tower

번역: 방준영(Bang Jun-Young) bangjy@nownownuri.nowcom.co.kr 1996년 11월 24일