091

DLL(동적 라이브러리)와 SLL(정적 라이브러리) 본문

Computer Science

DLL(동적 라이브러리)와 SLL(정적 라이브러리)

공구일 2025. 9. 16. 13:19
728x90

1. 동적 라이브러리(Dynamic Link Library, DLL)

- 동적 라이브러리는 실행 시점에 외부 라이브러리를 불러와 사용합니다. 여러 프로그램이 같은 DLL을 공유할 수 있기 때문에 메모리와 디스크 공간이 절약됩니다. -> DLL 파일이 없거나 버전이 다르면 실행 오류가 발생합니다. 

 

2. 정적 라이브러리(Static Library)

- 정적 라이브러리는 컴파일/링킹 시점에 실행 파일 안에 통째로 포함하여 사용합니다. 프로그램 실행할 때 추가 파일이 필요없기 때문에 배포가 간단하고 독립적입니다. -> 실행 파일이 커지고 라이브러리 수정 시 프로그램을 다시 빌드해야하는 번거로움이 있습니다.

 

3. 빌드와 실행

- 빌드란 실행 파일을 만드는 총 과정을 의미하며, 전처리->컴파일->어셈블->링킹 과정을 의미합니다. 참고로 컴파일 언어(C/C++,GO)의 경우 이 전 과정을 거치지만, 바이트 코드 언어(Java, C#)는 전처리와 어셈블 과정이 필요하지 않고, 인터프리터 언어는 빌드가 거의 없는 상태로 실행 시점에 해석 된다는 차이가 있습니다.

-> 전처리란 소스를 정리하는 과정으로 #include나 매크로를 처리합니다. 

-> 컴파일이란 소스를 목적 파일(기계어, 바이너리 코드)로 변환 시키는 과정입니다. 어셈블 과정이 있는 경우 어셈블리로 전환합니다.

-> 어셈블이란 어셈블리를 목적 파일(기계어, 바이너리 코드)로 만드는 과정입니다. 이 과정이 없는 경우, 위의 컴파일에서 이미 목적 파일로 변환합니다.

-> 링킹이란 여러 목적 파일을 라이브러리와 합쳐 실행 파일 또는 라이브러리로 만드는 과정입니다. 이 때 위에서 말한 동적 링킹정적 링킹의 방식을 언어마다 다르게 원하는 대로 차용하여 사용됩니다. 

- 실행이란 말 그대로 OS가 만들어진 실행 파일을 돌리는 것을 의미합니다. 

728x90

'Computer Science' 카테고리의 다른 글

CQRS & EDA  (0) 2026.03.28
실시간 통신: Polling, Long Polling, SSE, WebSocket  (0) 2026.03.22
HTTP 상태 코드(Status Code)  (0) 2026.03.22