소스( .c) → 전처리 (.i) → 컴파일(.s) → 어셈블러(.o or .obj) → 링크/링킹 → 실행파일 (.exe)
Preprocessing → Compile → Assembler → Link
※ 밑줄 부분은 컴파일 과정에서 중간 파일이 생겼다가 지워진다.
중간 파일을 삭제하지 않고 보여주는 방법.
# gcc -v --save-temps -o test2 first.c
-v → 컴파일 과정을 화면에 출력한다.
--save-temps → 컴파일 과정에서 생성되는 중간 파일인 전처리 파일(*.i)과 어셈블리 파일(*.s)를 지우지 않고 현재 디렉토리에 저장한다. 컴파일 과정의 에러를 분석할 때 사용
cl /P /FA main.c
1. 전처리 (abc.i 파일 생성)
#define, #ifdef, #include,#pragma 등, 전처리기 사용
$cpp abc.c abc.i
2. 컴파일 (abc.s 어셈블러 파일 생성)
c 컴파일러사용
$/usr/lib/gcc/i486-linux-gnu/4.0.2/cc1 abc.i
3. 목적코드 생성( abc.o 오브젝트 파일 생성)
어셈블러를 사용하여 목적파일 생성
$as -V -Qy -o abc.o abc.s
4. 링크(실행파일 생성)
링커를 사용-Collect2
두 개 이상의 목적 프로그램을 합쳐서 실행 가능한 한 개의 프로그램으로 만드는 작업