- 소스 파일(Source File)
- 개발자가 작성한 원시 코드, 주로
.c
,.cpp
등의 확장자를 갖는 파일- 전처리기(Preprocessor)
- 전처리기는 주석을 제거하고 매크로를 확장하며 include 지시문을 처리하여 전처리된 파일을 생성함
- 이 과정은 소스 코드를 컴파일러가 이해할 수 있는 형태로 변환
- 전처리 결과는 주로
.i
파일로 저장- 컴파일러(Compiler)
- 전처리된 소스 코드를 어셈블리어 코드로 변환, 이 단계에서 문법 및 의미 분석을 수행하여 오류를 검사
- 컴파일 결과는 주로
.s
파일로 저장- 어셈블러(Assembler)
- 어셈블리어 코드를 기계어 코드로 변환, 이 기계어 코드는 객체 파일(
.0
)로 저장
- 이 단계에서 각종 최적화가 수행
- 링커(Linker)
- 여러 개의 객체 파일과 라이브러리를 결합하여 실행 가능한 파일(Executable)을 생성, 이 과정에서 각 객체 파일의 함수와 변수의 참조를 해결하고 프로그램이 메모리에 로드될 주소를 할당