[C, C++] 컴파일 순서
Cpp(기계어로 번역) ➡️ 전처리기(#include 같이 #으로 시작하는 건) ➡️ 컴파일 ➡️ 어셈블링 - obj(목적) 파일 생성 ➡️ Linker ➡️ exe
1. Preprocessor (전처리단계)
매크로 프로세서(MacroProcess)라고 한다. C++언어로 작성된 프로그램의 소스를 문법적으로 해석하고 구문 에러(Syntax error)의 존재 여부 등 을 평가한다. 주석으로 되어있는 문장을 제거한다. #include, #define, #indef, #else, #endif, using, typedef 와 같은 키워드에 따라 필요한 파일들을 읽고 실제 컴파일이 가능하도록 프로그램 소스를 만드는 작업을 수행한다.
2. Complie (컴파일)
전처리 단계에서 제공한 프로그램의 소스를 실행이 가능한 바이너리 코드로 이루어진 기계어를 만들기 전에 다음 단계인 어셈블리 코드 (Assembly Code)로 만드는 작업을 수행한다. 어셈블리 코드는 기계어와 일대일로 대응되는 가장 낮은 단계의 텍스트로 이뤄진 코드를 말한다.
3. 어셈블링 단계
앞에 언급한 어셈블리 코드는 어셈블러(Assembler) 라고 부르는 컴파일러에 의하여 다시 실행이 가능한 프로그램 파일의 전 단계에 해당되는 오브젝트(object) 코드로 만들어진다. 오브젝트 코드는 링크 과정에 필요한 정보들을 갖고 있는 것이 특징이다.
4. 링크 단계
링커(linker)는 앞에서 생성된 오브젝트 코드와 C 언어에서 제공하는 표준 공유 라이브러리 (예를 들어 libc.so) 그리고 c++ 언어의 표준 공유 라이브러리 (libstdc++.so)를 사용하여 하나의 실행 가능한 프로그램을 만든다. 물론 링크 방식에 따라 공유 라이브러리에 대응되는 정적 라이브러리 (libstdc++.a)를 사용하기도 한다.
출처 및 참고 : https://velog.io/@rurioil/posts
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)