컴파일(compile)은 소스 코드를 기계어로 변환해주는 과정을 이른다. 컴파일을 수행하는 프로그램을 컴파일러라 부르며, 컴파일 방식으로 실행되는 언어를 컴파일 언어 또는 컴파일러 언어라고 부른다.
전통적으로는 컴파일을 통해 기계 언어로 변환된 목적 코드(object code)가 생성되고 링커(linker)를 통해 최종 실행파일이 만들어지는 과정을 거치지만 현대에는 다양한 변형이 존재한다. 예를 들어 JIT 컴파일 방식으로 실행되는 언어들은 전체적으로는 인터프리터를 통해 실행되지만 꼭 필요한 부분들만 적시에(just-in-time) 컴파일한다. 또는 자바의 바이크코드나 .NET의 중간언어(IL)과 같이 실제 하드웨어가 아닌 가상 머신을 타겟으로한 기계어를 생성하고 이 가상 머신용 기계어가 실제 하드웨어의 기계어로 변환되는 식으로 두 단계를 거치기도 한다.