Library   라이브러리

(2024-05-04)

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


2. 라이브러리 특징

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

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


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

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


4. C 언어 라이브러리

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


5. UNIX/Linux 시스템에서, 라이브러리의 특징

  ㅇ 라이브러리 위치 :  /lib, /lib64, /usr/lib 등

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

  ㅇ 정적, 동적 구분
     - 정적 라이브러리  :  파일 이름이 .a로 끝남
        . 추가 필요한 다른 라이브러리들을, 모두 실행 프로그램에 포함시키는 방법
     
     - 공유 라이브러리 (동적 라이브러리)  :  파일 이름이 .so 및 .sa로 끝남
        . 추가 필요한 다른 라이브러리들에 대한 연결고리 만을, 갖도록 하는 방법
           .. 메모리에 올려놓고, 관련된 실행 프로그램이 이와 연결되도록 함
           .. 여러 어플리케이션에서 공유 가능
           .. 공유 라이브러리는 많은 점에서 MS 윈도우즈의 동적 링크 라이브러리(DLL)와 비슷

     * 라이브러리 링크 시점 상의 구분
        . 동적 링크 방식 : `실행 파일메모리에 로드될 때`, 링크됨 
        . 정적 링크 방식 : `실행시 필요에 따라`, 메모리에 로드,링크됨

     * [참고] 리눅스에서, 동적 라이브러리의 의존성을 보여주는 명령어 : ldd


6. 런타임 라이브러리 

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

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


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

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

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

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

  1. Top (분류 펼침)      :     1,591개 분류    6,514건 해설

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]       편집·운영 (차재복)          편집 후원          편집 이력