static library와 shared library

younglee·2023년 1월 17일
post-thumbnail

library

  • 여러 개의 파일로 구성된 코드를 하나의 library로 구성한 것.
    빠르게 링킹할 수 있도록 컴파일 된 object의 형태로 이루어져 있음.

  • 크게 static, shared로 나뉨.

static library

  • 컴파일 타임에 링킹되는 라이브러리로 실행파일에 라이브러리의 내용이 바로 복사가 되어 실행파일의 실행에 라이브러리 파일은 필요없음.

  • 실행파일에 같은 내용의 코드가 여러번 작성되므로 메모리 낭비가 있음.

  • Linux에서 'lib<라이브러리 이름>.a'와 같은 이름으로 구성됨.

    $ar -rcs libstatic.a src1.o src2.o src3.o

  • Windows에서 .lib 확장자.

shared library

  • 컴파일 타임에 링킹하지 않고 컴파일 시 실행파일에는 라이브러리의 주소를 기록해두고 실행파일 실행시 라이브러리 주소에서 라이브러리를 로딩하여 실행.

  • 컴파일 타임에서의 장점은 실행파일의 크기가 작아진다는 것.

  • 런타임에서의 장점은 로드한 shared library는 같은 라이브러리를 사용하는 여러개의 프로세스가 주소를 공유하므로 메모리의 사용량이 적어진다는 것.

  • 실행파일의 실행 시 라이브러리 파일이 반드시 필요함. 없으면 실행 시 오류가 발생.

  • Linux에서 'lib<라이브러리 이름>.so'와 같은 이름으로 구성됨.

  • Windows에서 .dll 확장자.

0개의 댓글