C++ 빌드(컴파일) 과정
C++에서 우리가 작성한 소스 코드를 실제 실행할 수 있는 실행 파일로 변환하기 위해서는 빌드라는 과정이 필요합니다.
C++의 빌드 과정은 네 가지 단계로,전처리(Preprocessing),컴파일(Compile),어셈블링(Assemble),링킹(Linking) 순서로 이루어집니다.
전처리 과정에서는 코드 내의 전처리 구문을 처리하고 컴파일러가 이해할 수 있는 코드로 변환합니다.
컴파일 과정에서는 전처리된 코드를 어셈블리 코드로 변환하고, 코드 검사를 수행하고, 코드를 최적화합니다.
어셈블 과정에서는 어셈블리 코드를 컴퓨터가 읽을 수 있는 목적 코드로 변환합니다.
링킹 과정에서는 앞서 만들어진 목적 코드, 라이브러리의 목적 코드, 그리고 시동 코드를 링크하여 최종 실행 파일을 생성합니다.
전처리(Preprocessing)
전처리기는 #include, #define, 같은전처리 구문을 처리하며, 이는 컴파일이 이루어지기 전에 수행됩니다. 또한, 주석을 제거하고, 매크로를 확장하며, 조건 컴파일 지시어를 처리하는 등의 작업을 수행하며, 컴파일 전에 컴파일러가 해석할 수 있는 소스 코드로 치환합니다.
컴파일(Compile)
컴파일러는 전처리가 완료된 코드를어셈블리 코드로 변환합니다.
이 과정에서 소스 코드의 문법을 체크하고, 타입 검사를 수행하며, 최적화를 진행합니다.
이때, 프로그래머가 전역 변수를 초기화하지 않으면 컴파일러에 의하여 0으로 초기화됩니다.
어셈블링(Assemble)
어셈블러는 컴파일러가 생성한 어셈블리 코드를 컴퓨터가 읽을 수 있는목적 코드(기계어 코드)로 변환합니다.
이렇게 생성된 목적 코드는 이진 형태로 되어 있습니다.
링킹(Linking)
마지막으로링커는 앞서 만들어진 목적 코드, 라이브러리의 목적 코드, 시동 코드(프로그램의 시작과 종료를 처리하는 코드)등을 링크해서 최종실행 파일을 만듭니다.
링킹 과정의 마지막에서 생성되는 실행 파일의 형태는 사용하는 시스템에 따라 달라질 수 있습니다. 예를 들어, Windows 시스템에서는 .exe 파일이 생성되며, Unix 또는 Linux 시스템에서는 실행 가능한 바이너리 파일이 생성됩니다.