1. 프로그램의 실행 순서

왼쪽에서 오른쪽으로 생성이 된다.

참고 : https://velog.io/@mtak0235/Makefile , 열혈 c

1. 2. 3. 4. 5.
생성하는 파일이름 소스파일 목적파일 실행파일
파일 확장자 .c .i .S .O .exe
이 파일을 만들기 위해 gcc에 달리는 옵션 -E -c -o
다음단계로 가기 위한 단계 '전처리기'가 #으로 시작되는 부분들을 치환한다.(헤더파일 삽입, 실행문장 매크로 상수 변환) '컴파일'을 통해서 .i 파일을 어셈블리어로 된 .s 파일로 만든다. 실제로 만들어지는게 보이지는 않는다. '어셈블러'가 기계가 이해 가능한 언어 (= 기계어) 로 변경한다. '링킹'이 이루어진다. 이과정에서 파일간의 연결이 이루어지고, 라이브러리 함수도 연결된다.

(1) 소스파일 → .i 파일 [전처리하기]

한줄 요약 : 전처리까지 진행된다. 사용 옵션 : -E

$ gcc -E file.c
$ gcc -E file.c -o file.i 

(2) .i 파일 → .s 파일 [컴파일하기]

한줄요약 : 어셈블리어로 된 파일을 생성한다.

(3) .s 파일 → .o 파일 [어셈블하기]

한줄요약 : 기계가 이해 가능한 언어로 변경한다.

사용옵션 : -c

⇒ 이 옵션을 사용하면, 전처리(.c → .i) 후에 컴파일(.i → .s) 후에 어셈블(.s→ .o) 까지 진행한다.

$ gcc -c file.c 

⇒ c 파일에 대해서 .o 파일이 각각 생성된다, (c와 똑같은 이름으로)

(4) .o 파일 → .exe 파일[링킹하기]

$ gcc file.o