본문으로 건너뛰기

컴파일과 실행 구조

C는 컴파일 언어이기 때문에, 실행 전 전체 코드를 기계어로 변환하는 과정이 필요하다.

전처리(Preprocessing)

  • #include, #define 등 처리
  • 매크로 치환, 조건부 컴파일

컴파일 가능한 확장된 C 코드로 변환

컴파일(Compilation)

  • 전처리된 코드를 어셈블리 코드로 번역(아직 CPU가 해석X)
  • 변수는 메모리 주소로 바뀌고, 함수 호출은 명령으로 변환됨

코드의 로직이 CPU 명령어 집합에 맞는 형태로 변환

어셈블(Assembling)

  • 어셈블리 코드를 CPU가 해석가능한 기계어(binary) 로 변환
  • 이때 목적 파일(.o) 이 생성됨

중간 단계의 바이너리 조각 생성

링크(Linking)

  • 목적 파일(.o)과 표준 라이브러리 함수(ex. printf)등을 연결
  • 함수 및 변수 주소 재배치 및 참조 연결

프로그램 실행 파일(.exe) 생성

순서도