C Standard Library   C 라이브러리, C 언어 라이브러리

(2024-01-11)

libc, 표준 C 라이브러리, Header File, 헤더 파일, 헤더 화일


1. C 라이브러리C 언어에서, 자주 사용하는 함수들을 미리 작성하여 두고,
     - 그 프로토타입(함수 원형) 만을, 공개 하고,
     - 상세 구현 사항은, 별도로 모아 저장시켜둔 것

  ㅇ 통상, 미리 컴파일시켜, 라이브러리 파일 형태로 제공됨
     - 자주 사용되는 유용한 함수들에 대해, 미리 컴파일오브젝트 파일들을 모아둔, 파일 형태


2. C 라이브러리의 사용

  ㅇ 사용 방법
     - 함수 프로토타입구조체 정보 등이 있는 헤더 화일을,
       프로그램 처음에 포함(#include)시켜 사용

  ㅇ 헤더 화일
     - 주로, 함수 프로토타입(Function Prototype,함수 원형)이 들어있게 됨
        . 함수 프로토타입 
           .. 함수에 전달할 인수 및 이의 타입,
           .. 함수의 반환값의 타입 및 의미에 대한 정보 제공

  ㅇ 라이브러리 화일
     - C 라이브러리 함수들에 대해 미리 컴파일파일들
        . 例) libc.a (표준 라이브러리 파일), libm.a (수치 연산 라이브러리 파일) 등


3. 표준 C 라이브러리 (`standard C library`, `libc` 라고 칭함)

  ㅇ 표준 C 라이브러리 (역사 및 버전에 따라 여러가지가 있을 수 있음)
     - 플랫폼(운영체제)에 독립적임 :  ANSI C/ISO C library  (ANSI libc)
     - 유닉스 표준 :  C POSIX library  (POSIX libc)
     - 서버,데스크톱 리눅스에서 많이 사용 :  GNU C 라이브러리  (glibc)
     - 임베디드 리눅스에서 많이 사용 (메모리 사용 최소화됨) :  uClibc, diet libc, musl libc 등

  ㅇ C 라이브러리 함수 例) ☞ 아래 4.항 참조


4. C 라이브러리 구분

  ㅇ 표준 C 라이브러리
     - 표준 헤더 파일 (ISO C 표준에 정의된 헤더 파일들) 
        . assert.h : 프로그램 진단(diagnostics) 매크로
        . conio.h  : 콘솔(console) 입출력 함수 
           .. putch(),cputs(),cprintf() 등
        . complex.h
        . ctype.h 
           .. 문자형 판별 함수 : isalpha(),isdigit(),isupper() 등
           .. 문자 변환 함수 : tolower(),toupper() 등
        . errno.h
        . fenv.h
        . float.h  : 실수형에 관한 상수 정의
        . inttypes.h,
        . iso646.h
        . limits.h : 정수형에 관한 상수, 크기 등, 데이터형 마다 기계의존적인 길이를 정의
        . locale.h
        . math.h   : 수학 함수와 매크로
           .. sqrt(),sin(),cos(),tan(),pow() 등
        . setjmp.h : 일반적인 함수 호출과 복귀 과정을 거치지 않는 함수
        . signal.h : 프로그램 수행 중 발생하는 예외상황을 처리하는 함수
        . stdarg.h : 미확정 매개변수를 다루는 함수
        . stdbool.h
        . stddef.h
        . stdint.h : 데이터형 마다 그 길이를 명확하게 수치로써 정의함 (C99에서 새롭게 도입됨)
           .. 서로다른 기계 간에 이식성에 도움을 주기 위함
        . stdio.h : 표준 입출력 라이브러리표준 입출력 라이브러리, 표준 파일 참조
           .. 복잡한 입출력 기능을, 독자적인 버퍼를 사용하여, 쉽게 구현
           .. getchar(), putchar(), puts(), printf(), scanf(), fopen(), fclose(), fgetc() 등
        . stdlib.h : 범용 유틸리티
           .. 범용 함수,매크로 등
           .. 자료형 변환 (문자열숫자형) : atoi() 문자열 → 정수, strtol(), atof() 등
           .. 기억장소 할당 : malloc(), free() 등
           .. 정렬,검색 알고리즘 : qsort(), bsearch() 등
           .. 상수 정의 : NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX 등
        . string.h : 문자열 처리 함수
           .. 함수 : strcat(), strcmp(), strcpy(), strlen() 등    ☞ C 문자열 함수 참조
        . tgmath.h 
        . time.h   : 날짜와 시간을 다루는 함수
           .. difftime(), mktime() 등
        . wchar.h
        . wctype.h

  ㅇ 런타임 라이브러리
     * (Unix/Linux 운영체제 관련)

     - 운영체제 커널 차원에서 제공
        . 컴파일러플랫폼에 특화되어 있음 (의존적임)
        . 일반적인 C 언어 함수 호출 보다는 운영체제의 지원을 받는 시스템 호출을 의미
           .. 입출력, 메모리 관리 등에 대한 기능들 

     - 시스템 호출헤더 파일 例)
        . fcntl.h (열려있는 파일의 특성 제어를 위해서 사용)
        . syscall.h 
        . unistd.h (다양한 심볼 상수, 자료형, 함수 등을 정의)
           .. /usr/include/asm/unistd.h

C 언어 컴파일
   1. 라이브러리   2. C 라이브러리   3. 전처리 지시자   4. GNU C 컴파일러  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"