포스트

C++ 컴파일 과정 이해하기

C/C++ 코드를 작성하면 곧바로 실행 파일이 생성되는 것처럼 보이지만,
실제로는 여러 단계의 변환 과정을 지나면서 점점 기계가 이해할 수 있는 형태로 바뀐다.
아래는 그 흐름을 자연스럽게 따라가며 정리한 내용이다.


컴파일 전체 흐름

1. 전처리 단계

가장 먼저 전처리기가 소스 코드를 읽어 들인다.
이 단계에서는 #include, #define 같은 전처리 지시문이 모두 처리되며,
컴파일러가 바로 해석할 수 있는 형태로 코드를 재구성한다.

이 과정을 거치며 생성되는 파일이 .i 파일이다.


2. 컴파일 단계

전처리를 마친 코드는 컴파일러로 전달된다.
컴파일러는 프로그램의 구조를 분석하며,
C/C++ 코드를 CPU 명령에 가까운 형태로 바꾸어 어셈블리 코드(.s) 를 만들어낸다.

문법 오류가 잡히는 단계도 바로 이 과정이다.


3. 어셈블 단계

어셈블러는 .s 파일을 읽고,
CPU가 직접 실행할 수 있는 기계어로 변환하여 오브젝트 파일(.obj) 을 만든다.

각 함수, 전역 변수, 문자열 등이 목적에 맞게 정리되는 과정이기도 하다.


4. 링크 단계

마지막으로 링커가 여러 개의 .obj 파일과 필요한 라이브러리(.lib)들을 하나로 묶는다.
이 과정을 통해 Windows에서 실행할 수 있는 .exe 파일이 만들어진다.

이 단계에서 비로소 실제로 실행 가능한 바이너리가 완성된다.


마무리

전처리 → 컴파일 → 어셈블 → 링크 과정은 C/C++ 코드가 실제 실행 가능한 형태로 만들어지는 가장 기본적인 흐름이다.
이 구조를 이해하면 빌드 오류나 컴파일 과정에서 문제가 생길 때 어느 단계에서 문제가 발생한 것인지 훨씬 쉽게 파악할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

© Cryptonite7777. 일부 권리 보유

Powered by Jekyll with Chirpy theme