반응형
동적 라이브러리와 정적 라이브러리의 차이점
두 라이브러리의 주요 차이점
1. 링크 시점
정적 라이브러리(Static Library)
- 컴파일 시점에 프로그램에 포함됩니다.
- 라이브러리의 코드가 컴파일할 때 실행 파일에 삽입되어 결과적으로 하나의 독립적인 실행 파일이 생성됩니다.
동적 라이브러리(Dynamic Library)
- 실행 시점에 프로그램이 라이브러리를 참조합니다.
- 컴파일 시점에는 라이브러리 파일이 포함되지 않고 실행 시에만 해당 라이브러리를 로드하여 사용합니다.
2. 실행 파일 크기
정적 라이브러리
- 실행 파일에 라이브러리 코드가 포함되므로 실행 파일의 크기가 커질 수 있습니다.
동적 라이브러리
- 실행 파일에는 라이브러리 참조만 포함되므로 실행 파일 크기가 상대적으로 작습니다.
3. 라이브러리 업데이트 및 배포
정적 라이브러리
- 라이브러리가 업데이트될 경우 프로그램을 다시 컴파일해야 합니다.
- 컴파일된 실행 파일은 독립적이기 때문에 배포 시 추가적인 라이브러리 파일을 포함할 필요가 없습니다.
동적 라이브러리
- 라이브러리만 교체하면 프로그램이 바로 새로운 버전의 라이브러리를 사용할 수 있습니다.
- 배포 시 실행 파일 외에 라이브러리 파일도 함께 배포해야 합니다.
728x90
4. 메모리 사용
정적 라이브러리
- 각각의 프로그램이 독립적으로 라이브러리의 코드를 메모리에 로드합니다.
- 동일한 라이브러리를 사용하는 여러 프로그램이 있다면 그 라이브러리의 복사본이 각 프로그램마다 메모리에 따로 로드됩니다.
동적 라이브러리
- 하나의 라이브러리가 메모리에 한 번만 로드되고 여러 프로그램이 이를 공유해서 사용합니다.
- 메모리 사용이 더 효율적입니다.
5. 성능
정적 라이브러리
- 라이브러리가 이미 실행 파일에 포함되어 있어 프로그램 실행 시점에 추가적인 로드 과정이 없습니다.
- 일반적으로 실행 성능이 더 빠릅니다.
동적 라이브러리
- 프로그램 실행 시에 라이브러리를 로드해야 하므로 약간의 로드 시간이 필요합니다.
- 하지만 메모리를 효율적으로 사용하고 여러 프로그램이 동일한 라이브러리를 공유할 수 있기 때문에 이점이 있을 수 있습니다.
6. 플랫폼에 따른 차이점
정적 라이브러리
- 각 플랫폼에 맞게 컴파일되기 때문에 플랫폼 간 이동이 어렵습니다.
동적 라이브러리
- 특정 플랫폼에 맞는 라이브러리 파일만 있다면 프로그램을 재컴파일하지 않고도 다른 시스템에서 사용할 수 있습니다.
7. 비교 표
구분 | 정적 라이브러리 | 동적 라이브러리 |
링크 시점 | 컴파일 시점에 포함됨 | 실행 시점에 로드됨 |
실행 파일 크기 | 실행 파일이 커짐 | 실행 파일이 작아짐 |
라이브러리 업데이트 | 프로그램을 다시 컴파일해야 함 | 라이브러리만 교체하면 됨 |
배포 시 요구 사항 | 실행 파일만 배포 | 라이브러리 파일도 함께 배포해야 함 |
메모리 사용 | 각 프로그램이 독립적으로 라이브러리를 메모리에 로드 | 여러 프로그램이 라이브러리를 공유하여 메모리 사용 효율적 |
성능 | 빠름 | 조금 느림 (로드 시간이 있음) |
확장장 | .a (Linux), .lib (Windows) | .so (Linux), .dll (Windows) |
정적 라이브러리는 독립성과 성능이 중요할 때 동적 라이브러리는 메모리 효율성과 업데이트 용이성이 중요할 때 적합합니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
127.0.1.1의 의미 (1) | 2024.10.10 |
---|---|
Apache Kafka와 ZooKeeper 클러스터를 구성하는 방법 (5) | 2024.10.09 |
CentOS 7에 YUM을 사용하여 MySQL을 설치하는 방법 (3) | 2024.10.06 |
ss 명령어 (0) | 2024.10.06 |
CentOS 7의 EOL 문제로 인해 발생하는 패키지 설치 오류를 해결하는 방법 (0) | 2024.10.05 |