컴파일의 단계는 [전처리 > 컴파일 > 어셈블리 > 링킹] 의 과정으로 분류한다.
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 대응을 통한 변환으로 컴파일러보다 간단하게 변환이 가능하다.
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 |
댓글