이 문서는 C++ 프로그램이 텍스트 형태의 소스 코드에서 실행 가능한 바이너리(Executable Binary) 파일로 변환되는 전체 과정을 설명합니다. C++의 빌드 과정은 크게 전처리, 컴파일, 링크의 단계로 나뉘며, 각 단계의 핵심 개념을 초보자도 이해할 수 있도록 명확하게 정리했습니다.
모든 C++ 프로그램은 main 함수를 가집니다. 이는 프로그램의 진입점(Entry Point)으로, 운영체제가 애플리케이션을 실행할 때 가장 먼저 코드를 읽고 실행하기 시작하는 부분입니다.
main 함수 내부의 코드를 위에서부터 아래로 한 줄씩 순차적으로 실행합니다.main 함수의 반환 타입은 정수형(int)이지만, 프로그래머가 명시적으로 값을 반환(return)하지 않아도 컴파일러가 자동으로 0을 반환하는 것으로 처리합니다. 이는 프로그램의 정상 종료를 의미하는 특별한 예외 규칙입니다.컴파일러가 소스 코드를 기계어로 번역하기 직전에 수행되는 단계입니다.
# 기호로 시작하는 구문(예: #include)을 전처리기 지시문이라고 부릅니다.#include <iostream> 구문이 있다면, 전처리기는 iostream이라는 파일의 모든 내용을 찾아 복사한 뒤, 현재 파일의 해당 위치에 그대로 붙여넣습니다.C++ 문법을 처음 접할 때 혼란스러울 수 있는 부분 중 하나는 꺾쇠 기호(<<)의 사용입니다.
std::cout << "Hello World"에서 사용되는 << 기호는 단순한 기호가 아니라 오버로딩된 연산자(Overloaded Operator)입니다.전처리기가 작업을 마친 후, 사람이 읽을 수 있는 C++ 코드를 컴퓨터가 이해할 수 있는 기계어(Machine Code)로 변환하는 과정입니다.
.cpp 파일은 각각 독립적으로 컴파일됩니다. 이때 헤더 파일은 직접 컴파일되지 않으며, 전처리기를 통해 .cpp 파일에 포함된 상태로만 처리됩니다..cpp 파일은 컴파일을 거쳐 각각 독립된 오브젝트 파일(.obj)로 변환됩니다.코드를 여러 파일로 나누어 관리할 때 반드시 이해해야 하는 핵심 개념입니다.
컴파일러가 생성한 여러 개의 개별 오브젝트 파일(.obj)을 하나로 연결하여 최종적인 하나의 실행 파일(.exe)을 만드는 과정입니다.
개발 환경(예: Visual Studio)에서는 코드를 컴파일하고 빌드하는 규칙을 설정할 수 있습니다.
위 본문에서 다룬 C++ 동작 원리의 중요한 핵심 개념은 다음과 같습니다.
# 지시문을 먼저 평가하여 필요한 파일의 내용을 복사 및 병합하는 작업 수행..cpp 파일을 독립적으로 기계어로 번역하여 개별적인 .obj(오브젝트) 파일을 생성하는 도구..obj 파일을 하나로 결합하여 단일 .exe(실행) 파일을 생성하고, 선언과 정의가 일치하도록 연결하는 도구.