0. 개요
시리얼 통신 기반으로 몇몇 장치를 컨트롤해야 하는 프로젝트를 수행하게 되었다. 이 과정에서 각 시리얼 통신을 관리하는 모듈들을 DLL 형태로 만들어야 했으며, 실제로 사용해 본 적은 없었기에 개발 과정을 통해 학습한 내용을 정리하고자 한다.
1. DLL(Dynamic Link Library) 이란?
DLL은 "동적 링크 라이브러리"의 약자로, 프로그램 실행 시 동적으로 로드되는 라이브러리다. 동적 라이브러리는 실행 시 필요한 부분만 메모리에 로드되며, 프로그램의 실행 파일에 포함되지 않고 외부 파일로 존재한다.
윈도우에서 주로 사용되며, 파일 확장자는. dll이다..dll 참고로, 리눅스와 macOS에서는 동적 라이브러리를. so(shared.so object)라는 파일 형태로 구현한다. DLL은 정적 라이브러리와는 다르게 프로그램 실행 중에 로드되고 호출되므로, 프로그램의 유연성과 확장성을 높이는 데 유용하다.
2. DLL의 특징 및 일반 라이브러리와의 차이점
정적 라이브러리와 동적 라이브러리는 몇 가지 주요 차이점이 있다:
정적 라이브러리
- 실행 파일에 포함되어 컴파일 시 함께 빌드된다.
- 배포 시 실행 파일 크기가 커질 수 있다.
- 라이브러리 코드 변경 시 프로그램 전체를 다시 빌드해야 한다.
동적 라이브러리 (DLL)
- 독립적인 파일로 존재하며, 프로그램 실행 시 동적으로 로드된다.
- 프로그램 크기를 줄이고, 여러 프로그램 간 라이브러리를 공유할 수 있다.
- DLL 파일만 교체하면 기능 업데이트가 가능하다.
3. DLL의 장단점
장점
- 공유 가능성
- DLL은 독립적인 파일로 존재하므로 여러 프로그램이 동일한 DLL을 공유할 수 있다.
- 유연성
- 실행 파일을 다시 빌드하지 않고도 DLL만 교체하여 기능을 업데이트할 수 있다.
- 메모리 효율성
- 동일한 DLL을 사용하는 여러 프로그램이 메모리를 공유하므로 시스템 메모리 사용량을 줄일 수 있다.* 여기서 메모리 공유란, A라는 프로그램에서 DLL을 메모리에 로드하면 B 프로그램에 해당 DLL을 사용할 땐, 이미 메모리에 로드되어있기 때문에 메모리 효율적이다라는 뜻이다. 연산 관점이 아니다
단점
- 종속성 문제
- 프로그램이 특정 버전의 DLL에 의존하기 때문에, DLL이 변경되거나 삭제되면 프로그램 실행에 문제가 발생할 수 있다. 이를 "DLL 지옥(DLL Hell)"이라고 부르기도 한다.
- 로드 시간 지연
- DLL은 실행 시 동적으로 로드되므로, 정적 라이브러리에 비해 초기 로드 시간이 더 걸릴 수 있다.
- 배포 문제
- DLL의 위치가 잘못 설정되면 프로그램이 DLL을 찾지 못해 실행 오류가 발생할 수 있다.
'IT 기술 > 기타' 카테고리의 다른 글
Podman 으로 Docker 대신하기 - MAC m4 (0) | 2025.02.14 |
---|---|
MAC M4에서 한영 전환 - karabiner (0) | 2025.02.13 |
[Jest] ESM 모듈에서 Mock 생성 간 발생하는 에러 (0) | 2025.01.04 |
[NGINX] SPA 배포 간 문제 (1) | 2024.10.18 |
GitAction 을 이용해 Jira 와 연동 중 발생한 문제들 (0) | 2024.09.13 |