컴파일은 인간이 이해할 수 있는 언어로 작성된 소스 코드(고수준 언어: C, C++, Javd 등)를 CPU가 이해할 수 있는 언어(저수준언어: 기계어)로 번역(변환)하는 작업을 말한다.
(컴파일 하면 소스 코드의 문법을 검사하고 실행한다.)
인간이 C, C++, Java로 작성하는 소스 코드는 컴퓨터가 이해할 수 없다. 컴퓨터는 0,1로 이루어진 기계어만 이해할 수 있기 때문이다. 따라서 우리가 작성한 소스 코드를 컴퓨터가 이해할 수 있도록 기계어로 번역하는 컴파일 과정이 필요하다.
소스 코드는 컴파일을 통해 기계어로 이루어진 실행 파일이 된다. 이 파일을 실행하면 실행 파일 내용이 운영체제의 Loader를 통해 메모리에 적재되어 프로그램이 동작한다.
전체 컴파일 과정과 그 이후 과정 중,
실행파일이 만들어지는 순간까지를 컴파일타임이라 부르고
실행파일이 실행된 후의 시간대를 런타임이라 부른다.
소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) -> 실행
컴파일타임 : 전처리기~컴파일러
런타임 : 어셈블러~실행파일