GNC 컴파일러란?
공개 소프트웨어 프로젝트인 개인이나 단체에 구속 되지 않는 자유 형식을 띄는 GNU Project의 일환으로 제작 된 컴파일러
GCC 컴파일러란?
GCC란 GNU Compiler Collection의 약자로 C언어만 지원하는 GNU C Compiler에서 발전하여 C++ 언어도 컴파일 가능하도록 지원함
G++(GNU C++ Compiler)
C++언어용 컴파일러, GNU C++ Compiler의 약자, .C 파일과 .CPP 파일 모두 C++ 언어로 컴파일
Compile Process
소스 코드의 컴파일 과정은 위와 같은 과정을 거치면서 변환됨
.c → .s → .o → .out
Preprocessor(전처리기) a.i
코드 작성 시 #으로 시작하는 전처리기 구문을 처리하게 됨. 단순 치환으로 이루어지기 때문에 원치 않는 연산 순서 변경을 막기 위해 항상 매크로 구문이나 전처리 구문에 괄호를 추가함
#include로 특정 파일 포함하라는 명령
Compiler(컴파일러) - a.s
컴파일러는 우리가 작성한 고수준 언어를 저수준의 언어(Assembly)로 번역하는 역할. 어셈블리어로 바꾸는 알고리즘에 따라서 컴파일러의 성능이 달라짐.
Assenbler(어셈블러) - a.o
어셈블러는 어셈블러어를 완전한 기계어로 변역함, 이 결과물을 object파일 또는 binary 파일이라고 함
Linker(링커) - a.out
여러가지 파일을 함께 엮어서 프로젝트로 만들 때 파일들과 라이브러리를 하나로 엮는 역할