정적 라이브러리와 동적 라이브러리는 프로그램 개발에서
코드의 재사용성과 모듈화를 위해 사용되는 함수를 모아 놓은 실행 파일을 말한다.
📌 정적 라이브러리( Static Library )
정적 라이브러리는 실행 파일과 Link타임에 결합되어 한 실행 파일로 합성되는 것을 말한다.
특징
- 파일 확장자
- .lib
- 컴파일 및 링크 과정
- 라이브러리의 소스 코드를 컴파일하여 개별적인 오브젝트 파일( .o 또는 .obj )을 생성한다.
- 이 오브젝트 파일들을 하나의 정적 라이브러리 파일( .a 또는 .lib )로 묶는다.
- 프로그램을 빌드할 때 정적 라이브러리를 포함하여 최종 실행 파일을 생성한다.
- 배포 방식
- 실행 파일에 라이브러리 코드가 포함되므로, 라이브러리 파일을 별도로 배포할 필요가 없다.
- 속도
- 실행 속도가 빠르다. ( 라이브러리가 이미 실행 파일에 포함되어 있기 때문 )
- 단점
- 실행 파일의 크기가 커진다.
- 라이브러리가 변경되면, 모든 프로그램을 다시 컴파일 해야 한다.
📌 동적 라이브러리( Dynamic Library )
동적(= 런타임) 라이브러리는 실행 파일과 링크타임에 결합되지 않고 독립적인 실행파일 형태로 생성되며
실행 파일이 실행 될 때 '동적으로' 결합되는 것을 말한다.
특징
- 파일 확장자
- .dll
- 컴파일 및 링크 과정
- 라이브러리의 소스 코드를 컴파일하여 개별 오브젝트 파일( .o 또는 .obj )을 생성한다.
- 동적 라이브러리( .so, .dll, .dyblib )를 생성한다.
- 프로그램을 컴파일할 때 라이브러리를 참조하지만, 실행 시점에 라이브러리를 로드한다.
- 배포 방식
- 실행 파일에는 라이브러리 코드가 포함되지 않으며, 별도의 동적 라이브러리 파일이 필요하다.
- 메모리 사용 최적화
- 여러 프로그램이 하나의 동적 라이브러리를 공유하기 때문에 메모리 사용이 정적 라이브러리보다 효율적이다.
- 업데이트 용이성
- 라이브러리를 수정해도 프로그램을 다시 컴파일할 필요 없이 새 라이브러리만 배포하면 된다.
- 단점
- 실행 시 라이브러리를 로드해야 하므로 성능이 정적 라이브러리보다 약간 낮을 수 있다.
- 라이브러리가 없거나 버전이 맞지 않으면 실행 오류가 발생할 수 있다.
'강의 정리 > 인프런' 카테고리의 다른 글
[인프런] Stack overflow ( 스택 오버플로우 ) (0) | 2025.03.10 |
---|---|
[인프런] 함수 호출 관계 (0) | 2025.03.10 |
[인프런] 동적 라이브러리 개발 (0) | 2025.03.10 |
[인프런] 1bit와 2수 ( = 디지털 ) (0) | 2025.02.21 |
[인프런] 외워야 할 단위 체계와 숫자 (0) | 2025.02.21 |