1.2 프로그램은 다른 프로그램에 의해 다른 형태로 번역된다

C 프로그램의 "hello world" 를 예시로 들자면,

전처리 단계(pre-processor)
먼저, .c 파일은 전처리기(pre-processor)을 통한 전처리 과정을 거친다. 이 과정에서는 # 으로 시작하는 문장을 실행한다. 대표적으로 #include <stdio.h> 가 있다. 이 과정을 거치고 나서는 .i 로 끝나는 새로운 파일이 생성된다.

컴파일 단계(compiler)
.i 파일을 .s 파일로 변환한다. 즉, 어셈블리어로 변환된다. 여기까지는 사람이 해석할 수 있는 텍스트 파일이다. 이후 과정부터 생성되는 파일은 사람이 해석할 수 없는 바이너리 파일이 생성된다.

어셈블리 단계(assembler)
변환된 어셈블리어 텍스트 파일을 재배치 가능한 목적프로그램 으로 변환한다. 여기서부턴 바이너리 파일로 사람이 해석할 수 없다. 재배치 가능한 이 어떤 의미인지 추측해보자면, 전체를 함수화하여 여러 곳에서 호출 가능하게 만드는 과정으로 예상된다. 예를 들어 printf.o 파일을 통해 어디서든 printf 를 사용하는 것과 유사하지 않을까?

링크 단계(linker) 필요한 여러 목적파일(.o) 을 합치는 과정이다. hello 프로그램에서는 hello.oprintf.o 가 합쳐진다.

이렇게 만들어진 실행파일 hello 파일은 메모리에 적재되어 시스템에 의해 실행된다.