Compile
- 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스다.
- 즉, 인간이 이해할 수 있는 언어로 작성된 소스 코드를 CPU가 이해할 수 있는 언어로 번역하는 작업이다.
컴파일 과정
- 컴파일 과정은 전처리(Pre-Processing) → 컴파일(Compilation) → 어셈블리(Assembly) → 링킹(Linking)으로 나누어진다.
전처리(Pre-Processing)
- 전처리기(Preprocessor)를 통해 소스 코드 파일(.c)을 전처리된 소스 코드 파일(.i)로 변환하는 과정이다.
- 주석 제거 : 소스 코드에서 주석을 제거한다.
- 주석은 사람들이 알아볼 수 있게 남긴 내용으로 컴퓨터가 알 필요는 없다.
- 헤더 파일 삽입 : #include 지시문을 만나면 해당하는 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다.
- 즉, 헤더 파일은 컴파일에 사용되지 않고 소스 코드 파일 내에 전부 복사된다.
- 헤더 파일에 선언된 함수 원형은 후에 링킹 과정을 통해 실제로 함수가 정의되어 있는 오브젝트 파일(컴파일된 소스 코드 파일)과 결합한다.
- 매크로 치환 및 적용 : #define 지시문에 정의된 매크로를 저장하고 같은 문자열을 만나면 #define 된 내용으로 바꿔준다.
컴파일(Compilation)
- 컴파일(Compilation) 과정은 컴파일러를 통해 전처리된 소스 코드 파일(.i)을 어셈블리어 파일(.s)로 변환하는 과정이다.
- 이때, 작성한 언어의 문법검사가 실행된다.
어셈블리(Assembly)
- 어셈블리(Assembly) 과정은 어셈블러(Assembler)를 통해 어셈블리어 파일(.s)을 오브젝트 파일(.o)로 변환하는 과정이다.
- 오브젝트 파일 : 사람이 알아볼 수 없는 기계어로 변환된 코드로 구성된 파일
링킹(Linking)
- 링킹(Linking) 과정은 링커를 통해 오브젝트 파일(*.o)들을 묶어 실행 파일(.exe)로 만드는 과정이다.
'이론' 카테고리의 다른 글
| Queue (0) | 2024.03.26 |
|---|---|
| 컴파일러와 인터프리터 차이 (0) | 2024.03.24 |
| 데드락 예방조건 4가지 (0) | 2024.03.20 |
| 데드락(deadlock) 발생조건 4가지 (0) | 2024.03.19 |
| Animation Tweening (0) | 2024.03.18 |