티스토리 뷰

Language/C 언어

C언어의 컴파일 단계

데브훈96 2020. 2. 5. 02:16

 

안녕하세요, IT 디자이너입니다.

 

저의 첫 포스팅으로 컴퓨터가 C언어를 어떻게 해석하는지에 대해서 포스팅하려고 합니다.

 

우선 간단하게 C언어의 컴파일 단계를 이미지로 설명드리겠습니다.

 

C언어의 컴파일 단계

C언어의 컴파일 단계

 

1. 소스 파일(Source File)

우리가 간단하게 작성한 소스코드를 컴파일 하는 단계도 이렇게 많은 절차를 걸쳐서 실행파일을 생성하게 됩니다.

 

소스 파일은 여러분이 개발하면서 한 번쯤은 봤을 " .c " 또는 C++일 경우 " .cpp "확장자로 된 파일입니다.

우리가 작성한 소스코드가 저장되어있습니다.

 

2. 선행 처리기(Preprocessor)

그다음은 "선행 처리기"를 거치게 됩니다.

 

선행 처리기의 역할을 설명해드리기 앞서, C언어를 통한 소스코드 작성 시 상단의 #include <stdio.h>를 한 번쯤은 보셨을 겁니다.

여기서 #include를 "선행 처리 지시자"(Preprocessing Directives)라고 하며, < > 안의 " .h "로 된 파일을

헤더 파일이라고 합니다. (stdio.h는 C언어에서 제공하는 표준 라이브러리입니다.)

 

"#include"는 외부 파일 또는 라이브러리를 참조할 수 있게 해줍니다.

(몇천 자가 되는 소스코드를 한 파일로 관리하면은 많이 복잡하겠죠?...),

 

"선행 처리 지시자"를 통해서 외부 파일 참조만이 아닌, 여러 가지 일을 할 수 있게 됩니다. "매크로 함수", "상수" 생성할 수 있으며, 조건에 따라서 컴파일 되는 파일을 선택할 수 있도록 할 수 있습니다.

 

선행 처리기는 위에서 설명드린 "선행 처리 지시자"를 C언어 컴파일러가 컴파일 할 수 있게 번역해주는 일을 합니다.

 

3. 컴파일러(Compiler)

컴퓨터에 관해서 배우실 경우 한 번쯤은 꼭 들어보셨을 겁니다

"컴퓨터는 0과 1만 이해할 수 있는 바보이다."라고요, 네 맞습니다.

 

컴파일러는 우리가 작성한 소스코드가 "선행 처리기"를 거치고 나서 진행하는 단계입니다.

컴파일러는 소스코드를 0과 1로 번역해서 컴퓨터가 이해할 수 번역해줍니다.

(0과 1로 번역되어 컴퓨터가 이해할 수 있는 언어를 "기계어"라고 합니다.)

 

이렇게 컴퓨터가 이해할 수 있는 언어로 번역된 파일의 확장자명은 " .o " 또는 " .obj "이며, "오브젝트 파일" 이라고합니다.

 

4. 링커(Linker)

"링커"라는 이름을 들었을 때 무언가를 연결해주는 느낌이죠? 네, 맞습니다.

 

링커의 역할은 우리가 작성한 "소스 코드"가 "선행 처리기" 그리고 컴파일을 걸쳐서 생성된 오브젝트 파일을 C언어 표준 라이브러리 (<stdio.h>)와 시동 코드 등을 합쳐서 하나의 파일로 만드는 작업을 진행합니다.

 

이러한 작업을 C언어에서는 "링크(link)"라고 하며, 이러한 과정을 거쳐서 실행파일 ( .exe 또는. dmg로 된 확장자)을 생성합니다.

 

아까 선행 처리기 설명에서 "#include"는 외부 파일 또는 라이브러리를 참조할 수 있게 해줍니다."라는 설명을 하였습니다.

 

여기서 외부 파일은 우리가 유지 보수성을 위해 나눠놨던 "소스파일"이라고 생각하셔도 좋습니다.

"링커(linker)"통해서 우리가 나눠놨던 "소스 파일"도 이 단계에서 합쳐져서 하나의 실행파일로 생성됩니다.


 

어떠한 기술을 배우기 앞서 어떻게 작동하고, 그 원리를 파악하는 것 또한 중요하다고 생각하여 C언어의 문법보다는 컴파일 과정을 먼저 설명드렸습니다. 감사합니다. 😆

 

 

#C언어 #컴파일 #IT

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함