본문 바로가기
공부/TIL•기타

정적 / 동적 라이브러리

by svcbn 2025. 12. 18.

12/15
 
 

라이브러리는 정적 라이브러리(static library) 와 공유 라이브러리(shared library) 로 나눌 수 있다. 그 중 공유 라이브러리는 유닉스 계열의 운영체제에서 공유 라이브러리 (shared library), 윈도우즈 운영체제에서는 동적 라이브러리(dynamic library) 라고 부른다.
 

정적 라이브러리

정적 라이브러리는 컴파일 타임에 타깃 바이너리에 복사되어 포함되는 라이브러리. 실행 파일이 라이브러리 코드를 포함하고 있으므로 별도의 외부 라이브러리 파일이 필요하지 않다. Windows 에서는 .lib(Library), Unix 에서는 .a(Archive) 확장자를 사용.
라이브러리 자체가 프로그램에 포함되므로 버전 관리가 명확하며, 실행 환경 의존성도 적다. 그렇지만, 해당 라이브러리가 여러 프로그램에서 공통적으로 사용된다면 불필요한 중복으로 용량이 커지며, 런타임에 메모리도 많이 차지할 수 있다. 라이브러리 코드가 수정되면 관련 프로그램을 모두 재컴파일해야 하는 불편함도 있다.
 

동적 라이브러리

동적 라이브러리는 런타임에 결합되어 사용되는 라이브러리. 라이브러리 코드가 실행 파일 내부에 포함되지 않고 별도의 파일로 존재하다가, 프로그램 실행 시 메모리에 로드된다. Windows 에서는 .dll(Dynamic Link Library), Unix 에서는 .so(Shared Object), MacOS 에서는 .dylib(Dynamic Library) 확장자를 사용.
메모리에 한 번만 로드되면 여러 프로그램이 해당 코드를 공유해서 사용할 수 있어, 메모리를 절약한다. 그렇지만, 프로그램 실행 시 해당 라이브러리 파일이 지정된 위치에 없거나, 버전이 맞지 않거나 하면 오류가 발생하고, 외부 파일 형태이므로 라이브러리 자체의 보안 취약성이나, 실행 중에 라이브러리를 찾고 연결하면서 실행 속도가 느려지기도 한다.
 
 
정리하자면, 라이브러리의 실행 파일 내 포함 여부에 따라 구분하는 것. 그에 따라 장점도, 단점도 발생하기 때문에, 보통 용도를 필요에 맞게 사용하게 되는데,
독립적인 실행이 중요하거나, 성능 최적화가 극도로 필요한 임베디드 시스템, 보안이 중요한 모듈은 정적 라이브러리를 사용.
대규모 애플리케이션 프레임워크, 플러그인 구조 시스템, 시스템 자원을 절약해야 하는 다중 프로세스 환경에서는 주로 동적 라이브러리를 사용한다.

'공부 > TIL•기타' 카테고리의 다른 글

DeepLink  (0) 2026.01.10
개발 반성회 (async / mvc)  (6) 2025.12.30
CGI  (0) 2025.12.10
ORM Document / Docset  (0) 2025.12.01
Breakpoint  (0) 2025.11.25