Library   라이브러리

(2024-01-06)

1. 라이브러리프로그램 재사용 및 생산성 향상을 위해, 
     - 프로그램 내부처리에 깊게 관여하지 않도록 도와주는,
     - 유용하고 공통적인 함수들의 집단


2. 라이브러리 특징

  ㅇ 재사용이 가능하도록 작성되고, 
  ㅇ 미리 컴파일된채 특정 라이브러리 파일에 담아둔, 
  ㅇ 함수들의 모음

  ※ (이들은 대개 공통적인 작업을 수행하기 위한 일련의 함수들로 구성됨)


3. 언어별 표준 라이브러리

  ㅇ 특정 프로그래밍 언어 마다, 자주 사용되는 표준적인 소스 코드들을,
     - 미리 구현시켜 모아놓은 라이브러리를 말함
        . 例) 표준 C 라이브러리 (libc), C++ STL
        . 例) 파이썬 표준 라이브러리 등


4. C 언어 라이브러리

  ※ ☞ C 라이브러리 참조
     - 주로, 표준 C 라이브러리 (약칭, `libc`)를 말함
     - 통상, 미리 컴파일되어 라이브러리 파일 형태로 제공됨

  ※ (여기서는 주로, UNIX/Linux 라이브러리 에 국한하여 정리)

  ㅇ 시스템 내 라이브러리 위치 :  /lib, /lib64, /usr/lib 등

  ㅇ 라이브러리 이름 :  항상 lib로 시작함
     - 例)  lib[라이브러리명칭].so.[버전]

  ㅇ 정적 라이브러리  :  파일 이름이 .a로 끝남
     - 추가 필요한 다른 라이브러리들을, 모두 실행 프로그램에 포함시키는 방법

  ㅇ 공유 라이브러리 (동적 라이브러리)  :  파일 이름이 .so 및 .sa로 끝남
     - 추가 필요한 다른 라이브러리들에 대한 연결고리 만을, 갖도록 하는 방법
        . 메모리에 올려놓고, 관련된 실행 프로그램이 이와 연결되도록 함
        . 여러 어플리케이션에서 공유 가능
        . 공유 라이브러리는 많은 점에서 MS 윈도우즈의 동적 링크 라이브러리(DLL)와 비슷
     - 동적 링크 방식 : 실행 파일메모리에 로드될 때, 링크됨 
     - 정적 링크 방식 : 실행시 필요에 따라, 메모리에 로드,링크됨
     - [참고] 리눅스에서, 동적 라이브러리 의존성을 보여주는 명령어 : ldd


5. 런타임 라이브러리 

  ※ ☞ 시스템 콜 (시스템 호출 API) 참조
     - 커널은, 시스템 호출 API를 통해, 광범위한 서비스를 제공하게 됨
     - 관련 헤더 파일 例) 
        . fcntl.h (열려있는 파일의 특성 제어를 위해서 사용), syscall.h, unistd.h 등

  ※ ☞ API 참조
     - 프로그램이 쉽게 이용할 수 있도록, 규격화된 응용 서비스들의 모음


6. [참고사항]  라이브러리 호출, 시스템 호출 간의 비교

  ㅇ 라이브러리 호출
     - 언어 또는 어플리케이션의 일부임
     - 사용자 공간에서 실행됨
     - 例) system, fprintf, malloc 등

  ㅇ 시스템 호출
     - 운영체제의 일부임
     - 트랩 또는 인터럽트를 통해, 운영체제 커널에 의뢰함
     - 커널 공간에서 실행됨
     - 例) chdir, fork, write, brk 등

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


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