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 |