컴파일과 실행 구조
C는 컴파일 언어이기 때문에, 실행 전 전체 코드를 기계어로 변환하는 과정이 필요하다.
전처리(Preprocessing)
#include
,#define
등 처리- 매크로 치환, 조건부 컴파일
컴파일 가능한 확장된 C 코드로 변환
컴파일(Compilation)
- 전처리된 코드를 어셈블리 코드로 번역(아직 CPU가 해석X)
- 변수는 메모리 주소로 바뀌고, 함수 호출은 명령으로 변환됨
코드의 로직이 CPU 명령어 집합에 맞는 형태로 변환
어셈블(Assembling)
- 어셈블리 코드를 CPU가 해석가능한 기계어(binary) 로 변환
- 이때 목적 파일(
.o
) 이 생성됨
중간 단계의 바이너리 조각 생성
링크(Linking)
- 목적 파일(
.o
)과 표준 라이브러리 함수(ex.printf
)등을 연결 - 함수 및 변수 주소 재배치 및 참조 연결
프로그램 실행 파일(.exe
) 생성