1. 소스 코드 

  • 우리가 작성한 c 코드는 보통 .c 확장자를 가진 파일로 저장된다.
  • 예: main.c

2. 전처리 과정 ( Preprocessing )

명령어 : gcc -E main.c -o main.i

 

전처리 과정은 소스 코드를 처리하며 다음 작업을 수행한다.    

  • 매크로 치환 : #define 으로 정의된 매크로를 실제 값으로 치환
  • 헤더 파일 포함 : #include로 포함된 헤더 파일의 내용을 코드에 삽입
  • 조건부 컴파일 : #if, #ifdef, #ifndef 등 조건부 컴파일 지시자를 처리.
  • 주석 제거 : 코드의 모든 주석을 삭제

결과물 : 전처리된 소스 코드가 저장된 .i 파일


3. 컴파일 과정 ( Compliation )

명령어 : gcc -S main.i -o main.s

 

컴파일러는 전처리된 코드를 어셈블리 코드로 변환한다.

결과물 : 어셈블리 코드가 저장된 .s 파일


4. 어셈블 과정 ( Assembly )

명령어 : gcc -c main.s -o main.o

 

어셈블러는 어셈블리 코드를 목적 파일로 변환한다.


5. 링킹 과정 ( Linking )

명령어 : gcc main.o -o main

 

링커는 여러 개의 목적 파일과 라이브러리를 결합하여 최종 실행 파일을 생성한다.

  • c 표준 라이브러리 ( libc )와 같은 필요한 라이브러리 포함
  • 함수 호출에 대한 주소를 결정하고 실제로 연결

결과물 : 실행 가능한 파일 ( main 또는 main.exe )


컴파일 과정 요약

 

  • main.c → 전처리 → main.i
  • main.i → 컴파일 → main.s
  • main.s → 어셈블 → main.o (목적 파일)
  • main.o → 링크 → main (실행 파일)

 

'CS > 혼공컴운' 카테고리의 다른 글

[CS] 프로세스 계층 구조  (0) 2025.02.11
[CS] 프로세스 상태  (0) 2025.02.11
[CS] 프로세스의 메모리 영역  (0) 2025.02.10
[CS] 문맥 교환  (0) 2025.02.10
[CS] 프로세스 개요  (0) 2025.02.10

+ Recent posts