091
DLL(동적 라이브러리)와 SLL(정적 라이브러리) 본문
1. 동적 라이브러리(Dynamic Link Library, DLL)
- 동적 라이브러리는 실행 시점에 외부 라이브러리를 불러와 사용합니다. 여러 프로그램이 같은 DLL을 공유할 수 있기 때문에 메모리와 디스크 공간이 절약됩니다. -> DLL 파일이 없거나 버전이 다르면 실행 오류가 발생합니다.
2. 정적 라이브러리(Static Library)
- 정적 라이브러리는 컴파일/링킹 시점에 실행 파일 안에 통째로 포함하여 사용합니다. 프로그램 실행할 때 추가 파일이 필요없기 때문에 배포가 간단하고 독립적입니다. -> 실행 파일이 커지고 라이브러리 수정 시 프로그램을 다시 빌드해야하는 번거로움이 있습니다.
3. 빌드와 실행
- 빌드란 실행 파일을 만드는 총 과정을 의미하며, 전처리->컴파일->어셈블->링킹 과정을 의미합니다. 참고로 컴파일 언어(C/C++,GO)의 경우 이 전 과정을 거치지만, 바이트 코드 언어(Java, C#)는 전처리와 어셈블 과정이 필요하지 않고, 인터프리터 언어는 빌드가 거의 없는 상태로 실행 시점에 해석 된다는 차이가 있습니다.
-> 전처리란 소스를 정리하는 과정으로 #include나 매크로를 처리합니다.
-> 컴파일이란 소스를 목적 파일(기계어, 바이너리 코드)로 변환 시키는 과정입니다. 어셈블 과정이 있는 경우 어셈블리로 전환합니다.
-> 어셈블이란 어셈블리를 목적 파일(기계어, 바이너리 코드)로 만드는 과정입니다. 이 과정이 없는 경우, 위의 컴파일에서 이미 목적 파일로 변환합니다.
-> 링킹이란 여러 목적 파일을 라이브러리와 합쳐 실행 파일 또는 라이브러리로 만드는 과정입니다. 이 때 위에서 말한 동적 링킹과 정적 링킹의 방식을 언어마다 다르게 원하는 대로 차용하여 사용됩니다.
- 실행이란 말 그대로 OS가 만들어진 실행 파일을 돌리는 것을 의미합니다.
'Computer Science' 카테고리의 다른 글
| CQRS & EDA (0) | 2026.03.28 |
|---|---|
| 실시간 통신: Polling, Long Polling, SSE, WebSocket (0) | 2026.03.22 |
| HTTP 상태 코드(Status Code) (0) | 2026.03.22 |