컴파일이란
프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 된 것을 의미한다.
소스 파일(코드) -> preprocessor(전처리과정) -> compiler -> assembler -> Linker(목적코드) -> 실행
전처리
- 소스코드의 주석제거, #include 등 헤더파일을 병합하고 매크로를 치환하는 과정
컴파일러
- 오류처리, 코드최적화 작업을 하여 어셈블리어로 변환한다.
어셈블리어
- 목적코드(object code)로 변환되는데 이때 확장자는 운영체제마다 다른게 변한다.
링커
- 프로그럄 내 있는 라이브러리 함수 등과 결합해 실행파일이 만들어집니다. 이는 .exe 확장자, .out이라는 확장자를 갖게 된다.
* 요약하자면
✅ 1. 전처리 (Preprocessing)
- 대상 언어: 주로 C, C++ 같은 언어에서 사용
- 역할:
- #include, #define 등의 전처리 지시문을 처리
- 매크로 치환
- 불필요한 주석 제거
- 결과: 전처리된 코드
✅ 2. 컴파일 (Compilation)
- 역할:
- 전처리된 코드를 어셈블리어로 변환
- 문법 오류 체크
- 변수, 함수 등의 심볼 테이블 생성
- 결과: 어셈블리 코드 (.s 파일 등)
✅ 3. 어셈블리 (Assembly)
- 역할:
- 어셈블리 코드를 **기계어(목적 코드)**로 변환
- CPU가 이해할 수 있는 이진 코드 생성
- 결과: 목적 파일 (.o, .obj)
✅ 4. 링크(Linking)
- 역할:
- 여러 개의 목적 파일 또는 라이브러리들을 하나로 결합
- 함수 참조(예: printf)를 실제 메모리 주소로 연결
- 결과: 실행 가능한 파일 (.exe, a.out, 등)
'CS > 운영체제' 카테고리의 다른 글
| PCB와 컨텍스트 스위칭(context switching) (0) | 2025.05.29 |
|---|---|
| 프로세스 메모리 구조 (1) | 2025.05.29 |
| 가상메모리, 페이지테이블, 페이지폴트, 스레싱 (0) | 2025.05.28 |
| 인터럽트 (1) | 2025.05.27 |
| 운영체제와 컴퓨터 시스템의 구조 (0) | 2025.05.27 |