정적 라이브러리는 컴파일시 실행파일에 포함되며,
동적 라이브러리는 실행시 실행파일에 포함된다.
컴파일시 포함되는 것과, 실행시 포함되는것에 무슨 차이가 있을까?
실행파일이 1메가, 라이브러리가 100메가의 용량의 가지고 있다고 가정하자.
정적라이브러리의 경우 컴파일시 라이브러리가 실행파일에 포함되기 때문에,
위의 경우 컴파일후엔 실행파일의 용량이 101메가가 된다.
동적라이브러리의 경우 실행시 포함되기 때문에,
실행파일은 그대로 1메가, 라이브러리 100메가로 따로 존재하게 된다.
그렇다면 용량은 같은 101메가로 같은데 무슨 차이가 있을까?
실행파일이 실행되기 위해 메모리로 로드되는 시점에 차이가 나게 된다.
정적라이브러리의 경우 실행파일이 101메가 이므로, 실행 시작부터 종료시까지 101메가의 메모리를 사용한다.
그러나 동적라이브러리의 경우 실행파일이 1메가 이므로, 메모리를 1메가만 사용중 필요시만 100메가의 라이브러리를 로드하고, 불 필요시 100메가를 반환하게 된다.
그럼 어떤 경우에 어떤 라이브러리를 사용하는 것일까?
100메가의 라이브러리가 프로그램 실행시 부터 종료시까지 빈번히 사용되는 라이브러리라면 정적을 사용하는 것이 좋다. 동적의 경우 라이브러리를 로드하고 언로드 하는데 시간이 걸리므로, 프로그램이 실행되는 동안 라이브러리의 사용빈도가 비교적 낮을 경우에 사용하면 좋다.
사용하지도 않는 라이브러리를 메모리에 올려 놓으므로서 메모리가 낭비되게 되므로, 필요시 적기 적시에 따라 라이브러리의 특성에 맞게 사용하면 되겠다.
'Software' 카테고리의 다른 글
리눅스(Linux) vs 유닉스(Unix) 역사 및 차이 비교 (3) | 2016.04.21 |
---|---|
(용어)BSD(Berkeley Software Distribution) and Shell(셸) (0) | 2016.04.21 |
GNU C library(glibc) 와 C library(libc)와의 관계 (0) | 2016.04.12 |
가상 메모리 (0) | 2016.02.04 |
커널(Kernel)이란? (0) | 2015.08.31 |