C 프로그램의 컴파일 과정


C 소스코드를 짠 후 컴파일을 하게되면 다음과 같은 4가지 일이 일어난다.

   1. 전처리 ( Preprocessor )

   2. 컴파일 ( Compilation )

   3. 어셈블리 ( Assembly )

   4. 링킹 ( Linking )


컴파일 과정을 테스트해보기 위해 간단한 test.c 프로그램을 작성한다.

#include <stdio.h>

// Comment

#define STRING "Test String"
#define COUNT (5)

int main() {
    int i;
    for (i=0; i<COUNT; i++) {
        puts(STRING);
    }

    return 0;
}


가장 먼저 컴파일러는 C 전처리기로 소스코드를 보낸다. C전처리기는 3가지 일을 담당한다.

   1. 텍스트 치환

   2. 주석 제거

   3. 파일 포함( include )


gcc -E 옵션을 주면 1번(전처리)만 수행한 결과를 확인할 수 있다.

gcc -E test.c > test.txt


다음으로 2번째(컴파일) 과정을 진행한 후의 결과를 확인하기 위해선 gcc -S 옵션을 사용한다.

gcc -S test.c

gcc -S 옵션을 주어 컴파일을 하게되면 'test.s' 라는 어셈블리코드로 변환된 파일이 나온다.