[C] C언어 컴파일, GCC

wrld_worthy·2023년 11월 2일

C

목록 보기
3/6

C언어 컴파일, GCC

C언어는 컴퓨터에게는 고급 언어이기 때문에 컴퓨터가 직접 이해할 수 없다. 따라서 컴파일러를 사용하여 기계가 이해할 수 있는 코드로 변환하는 과정이 필요하다. C언어의 컴파일 과정은 크게 네 단계로 나눌 수 있다.

컴파일 과정


1. 전처리 (Preprocessing)

  • 소스 코드 파일에서 #include, #define, #ifdef 등의 전처리 지시어를 처리한다.
  • #include지시어가 있는 경우, 해당 파일의 내용을 소스 코드 파일에 포함시킨다.
  • 매크로(#define)를 실제 값으로 대체한다.
  • 조건부 컴파일 지시어를 평가하여 코드의 일부분을 포함하거나 제외한다.

2. 컴파일(Compile)

  • 전처리된 소스 코드를 어셈블리어로 변환한다.
  • 구문 분석(Syntax Analysis)을 통해 코드의 문법적 올바름을 검사한다.
  • 의미 분석(Semantic Analysis)을 통해 표현식의 타입을 확인하고, 타입의 일치성 등을 검사한다.

3. 어셈블리(Assembly)

  • 컴파일러가 생성한 어셈블리어 코드를 기계어 코드로 변환한다.
  • 이 단계를 오나료하면, 각 소스 파일에 해당하는 오브젝트 파일(.o또는.obj)이 생성된다.

4. 링킹(Linking)

  • 여러 개의 오브젝트 파일과 라이브러리를 하나의 실행 가능한 파일로 결합ㄴ한다.
  • 정적 링킹과 동적 링킹 두 가지 유형이 있으며, 필요한 코드와 데이터를 모아서 하나의 실행 파일을 만든다.

GCC (GNU Compiler Collection)

GCC는 GNU Compiler Collection의 약자로, C를 비롯한 여러 프로그래밍 언어를 지원하는 컴파일러 모음이다.
GCC는 자유-오픈 소스 소프트웨어로, 다양한 운영 체제에서 사용할 수 있다.

GCC 의 특징

  • 다양한 아키텍처와 운영 체제를 지원한다.
  • C, C++, Object-C, Fortran, Ada, Go 등 여러 언어의 컴파일을 지원한다.
  • 포터블하며, 최적화된 코드를 생성한다.

    GCC 사용 법

    Gcc를 사용하여 C 프로그램을 컴파일하고 링크하는 기본적인 명령어는
$ gcc -o output_file source_file.c

이다.

  • -o 옵션을 통해 출력될 실행 파일의 이름을 지정할 수 있다.
  • 컴파일러 옵션을 통해 최적화 레벨, 경고 메세지의 상세도, 디버깅 정보의 포함 여부 등을 조정 할 수 있음.

예시

# 전처리, 컴파일, 어셈블리, 링킹 단계를 모두 포함하여 실행 파일(program) 생성
gcc -o program main.c

# 각 단계별로 파일을 생성하여 컴파일 과정을 분석할 수 있음
gcc -E main.c -o main.i     # 전처리 결과
gcc -S main.i -o main.s     # 컴파일 결과 (어셈블리 코드)

0개의 댓글