본문 바로가기
개념

C언어, 컴파일, 동적 컴파일, 정적 컴파일, 동적 라이브러리, 정적 라이브러리

by 오렌지마끼야또 2021. 3. 29.
728x90
반응형

 

 

 

 

 

우리가 작성한 C 코드는 다음의 과정을 거쳐서 실행파일이 된다.

 

출처 : https://karfn84.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EC%9D%BC%EB%B0%98-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%9D%B4%EB%9E%80

작성한 코드(.c)가 컴파일러에 의해 오브젝트 파일(.obj)이 되고 

링커에 의해 라이브러리와 링크되어 실행파일(.exe)이 만들어진다.

 

 

우리가 프로그램을 만들 때 수 많은 함수를 사용하게 된다.

printf, scanf 등 이렇게 많은 함수들을 일일이 정의 할 수 없으니 만들어 놓은게

stdio.h 와 같은 라이브러리 이다.

 

이 라이브러리를 링크하는 모양에 따라 동적이냐 정적이냐가 나뉘게 된다.

 

그림으로 먼저 보자.

출처 : https://www.youtube.com/watch?v=JK6U91t7mgY

우리가 별도의 설정 없이 프로그램을 만들면 동적 라이브러리(DLL : Dynamic Link Library) 방식으로 만들어진다.

실행파일이 만들어지고 라이브러리가 연결되어서 필요 시 접근해서 가져다 쓰는 방식이다.

즉 .exe 파일과 .dll 파일이 모두 필요한 것이다. 

 

dll 파일이 없으면 프로그램을 실행할 수 없다.

 

정적 라이브러리(Static Link Library) 는 dll 처럼 연결되어 있는 것이 아니라

라이브러리가 아예 .exe 안에 들어가 있는 형태이다.

때문에 .exe 만 실행시켜도 프로그램이 돌아간다.

 

 

동적, 정적 모두 가상메모리가 할당 된다.

하지만 동적 방식은 실제 라이브러리가 아닌 dll 과 연결되어 있는 것이고(마치 포인터처럼?)

정적 방식은 라이브러리가 각각의 실행파일에 독립적으로 가상메모리를 채우고 있다는 차이점이 있다.

출처 : https://www.youtube.com/watch?v=JK6U91t7mgY

 

 

각각의 장단점이 있다.

동적 라이브러리는 exe 파일의 크기는 작다는 장점이 있지만 dll 파일이 없으면 안된다는 단점이 있고

정적 라이브러리는 exe파일만 있어도 실행이 되고 속도가 빠르다는 장점이 있지만 크기가 커진다는 단점이 있다.

 

 

 

 

 

도움이 되었다면 아래에 하트 눌러주기~

 

 

 

 

728x90
반응형

댓글