Skip to content

c언어 컴파일과정

1) 전처리 - code.c -> code.i

: 전처리기(Preprocessor)로 컴파일 전에 코드를 적정한 상태로 준비하거나 처리하는 일

#include <stdio.h>
#define STD 10
  • 전처리기는 필요한 헤더파일을 불러오거나, 기호 상수를 정의해서 코드 상으로 필요한 내용을 먼저 채워주는 역할을 한다.

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

  • 그리고 #define 부분을 심볼 테이블에 저장하고, 심볼 테이블에 들어 있는 문자열과 같은 내용을 만나면 해당 내용으로 치환한다. (매크로 치환 작업. #ifdef 와 같은 전처리기 구문도 처리됨)

2) 컴파일 - code.i -> code.s

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

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

  • 즉, 우리가 c언어로 열심히 코딩한 내용을 어셈블리어로 바꿔준다.

3) 어셈블 - hello.s -> hello.o

: 어셈블러(Assembler)가 어셈블리어를 기계어로 바꿔주는 일

  • 오브젝트 파일을 생성한다.

4) 링크 - hello.o -> hello.exe

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

  • 즉, 목적 프로그램을 라이브러리와 연결하여 실행 프로그램(.exe)을 작성한다.

  • 라이브러리(library) : 프로그래머들이 많이 사용하는 기능을 미리 작성해 놓은 것(e.x 입출력, 파일 처리, 수학 함수 등등)

image