스태틱 링킹과 다이나믹 링킹
Static Linking & Dynamic Linking
Static Linking
-
컴파일 타임에 모든 라이브러리 코드가 실행 파일에 포함된다
-
실행 파일이 독립적으로 실행 가능하다
-
Windows의 .lib, Linux의 .a 파일을 사용한다
Dynamic Linking
-
런타임에 필요한 라이브러리를 로드한다
-
실행 파일에는 라이브러리 참조 정보만 포함된다
-
Windows의 .dll, Linux의 .so 파일을 사용한다
차이점
| Static Linking | Dynamic Linking | |
| 메모리 사용 | ||
| 각 프로그램마다 라이브러리 복사본 필요 | 여러 프로그램이 하나의 라이브러리 공유 | |
| 메모리 사용량 증가 | 메모리 효율적 사용 | |
| 성능 | ||
| 실행 시작 속도 빠름 | 초기 로딩 시간 필요 | |
| 런타임 오버헤드 없음 | 함수 호출 시 간접 참조 필요 | |
| 유지보수 | ||
| 라이브러리 업데이트 시 재컴파일 필요 | 라이브러리만 교체하면 됨 | |
| 배포 크기 큼 | 배포 크기 작음 |
사용 시점
-
Static Linking: 독립적인 실행이 필요하거나 성능이 중요한 경우
-
Dynamic Linking: 메모리 효율성과 유지보수가 중요한 경우