컴파일(Compile)
컴파일은 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하여 목적코드(Object Code)를 생성하는 과정을 말한다. 예를들어 C언어에서 목적코드의 확장자는 *.o다.
이러한 컴파일을 수행해주는 프로그램을 컴파일러(Compiler)라고 한다. C언어에서 사용하는 GCC(GNU Compiler Collection), Java에서 사용하는 javac가 이러한 컴파일러에 해당한다.
컴파일과정은 컴파일언어로 작성된 소스코드에게만 필요한 과정이다. 대표적인 컴파일 언어로는 C, Java가 있다.다른건 인터프리터 언어가 있다.
빌드(Build)
위에 서술했듯이 C언어 컴파일의 결과물은 *.o파일이다. 그런데 우리가 알고있는 실행파일의 확장자는 .o가 아니다. 예를들어 윈도우에서 크롬 설치 프로그램을 다운받으면 파일 이름이 ChromeSetup.exe이다. 즉, 목적코드는 우리가 실행하는 실행파일이 아니며 소스코드를 실행파일로 만들기 위해서는 컴파일 과정 뿐만 아니라 .exe파일로 만들어주는 과정이 추가로 필요하다는 말이다.
빌드는 위 컴파일 과정을 포함하여 소스코드를 실행가능한 형태(실행파일)로 변환하는 일련의 과정이다. 컴파일 언어로 작성된 소스코드는 컴파일과정 이외에도 소스코드를 검사하거나 라이브러리를 링킹하거나 실행파일로 패키징하는 과정이 필요할 수 있다. 이러한 과정들을 묶어서 빌드라고 한다.
컴파일과 빌드의 혼용
위에서 말했듯 컴파일은 빌드과정 중 한 단계다. 그러나 보통의 경우 cmake, gradle과 같은 빌드 도구를 사용하지 개발자가 하나하나 컴파일하고 링킹하고 패키징하는 작업을 따로 하지 않는다. 따라서 보통 컴파일과 빌드는 같은 의미로 쓰인다. 누가 컴파일을 했다고 말하면 아 컴파일만 하고 링킹은 아직 안했구나? 라고 해석하지 않는다. 그냥 빌드를 했다고 이해한다.