본문 바로가기
공부

컴파일의 과정 조사 및 정리

by MY블로그 2022. 10. 8.

컴파일의 단계는 [전처리 > 컴파일 > 어셈블리 > 링킹] 의 과정으로 분류한다.

컴파일은 인간이 이해할수 있는 고수준의 언어를 CPU가 이해할수있는 저수준(기계어)으로 번역(변환) 하는 작업이다. 우리가 작성하는 코드는 컴퓨터가 이해할수 없으므로 [0],[1]로 이루어진 기계어로 번역하는 과정이 필요하며 이를 '컴파일과정' 이라고 한다.

1단계 전처리 [main.c ▶ main.i]

전처리기(Preprocessor)로 컴파일 전에 코드를 적정한 상태로 준비 및 처리하는 단계.

전처리기 #으로 시작하는 구문 ex) #include <       .h>

전처리 구문으로 필요한 헤더파일을 불러오거나 기호 상수를 정의해서 코드 상으로 필요한내용을 채워주는역활

전처리기는 #include 구문을 만나면 해당하는 헤더 파일을 찾아 내용을 순차로 삽입한다.

 

 

2단계 컴파일 [main.i ▶ main.s]

컴파일러(Compiler)가 고수준(High)언어를 저수준(Low)언어로 나타내는 일

소스 프로그램을 목적(Object) 프로그램으로 변환하는 작업이다.

코딩한 C언어의 내용일 어셈블리어로 바꾸어주며 컴파일 오류는 문법의 오류이므로 소스 파일을 수정해야함.

 

3단계 어셈블 [main.s ▶ main.o]

어셈블러(Assembler)가 어셈블리어를 기계어로 바꾸어주는 일 오브젝트 파일을 생성한다.

저금언어인 어셈블리어로 개발된 프로그램은 기계가 이해할 수 있는 명령어 코드로의 변환이 필요하다.

이때 어셈블리어로 작성된 코드를 변환해 주는 프로그램이 어셈블러이다.

1~6개의 문자로 구성된 어셈블리어를 보통 1:1로 하나씩 기계어로 변환하는 방식에 의해 작업을 수행하며,

이러한 변환작업을 어셈블(assemble)이라고 한다.

컴파일러또한 고급언어로 작성된 코드를 기계어로 변환해 주는 프로그램이라는 점에서는 동이하나

1:1 대응을 통한 변환으로 컴파일러보다 간단하게 변환이 가능하다.

출처 : 네이버 지식백과 (https://terms.naver.com/entry.naver?docId=1124708&cid=40942&categoryId=32838)

4단계 링크 [main.o ▶ main.exe]

링커(Linker)가 여러 오브젝트 파일을 하나로 합치거나 라이브러리와 합치는 일

즉, 목적 프로그램을 라이브러리와 연결하여 실행할수있는 프로그램인 실행파일(.exe)을 만든다.

여기서 라이브러리(Library)란 프로그래머들이 많이 사용하는 기능을 쉽게 사용하기위하여

미리 만들어 놓은 것을 말한다.  ex)입출력,파일처리,수학 함수 등등

 

 

 

'공부' 카테고리의 다른 글

C++ 연산자 우선 순위  (0) 2022.10.11
C++ 자료형의 종류  (0) 2022.10.11
연산자  (0) 2022.10.10
주기억 장치&보조기억 장치  (0) 2022.10.08
2022.10.07  (1) 2022.10.08

댓글