소스 코드 작성, 전처리, 컴파일, 어셈블, 링크, 실행 순으로 수행됩니다. 먼저, 사용자가 작성한 소스코드의 #으로 시작하는 전처리기 구문을 처리합니다. 그 다음 고수준의 언어를 어셈블리 언어로 번역하는 작업을 합니다. 어셈블 단계에서는 어셈블리 파일을 오브젝트 파일로 만들고 오브젝트 파일을 합치고, 링크 단계에서 라이브러리와 연결해 주고 실행 가능한 파일을 생성해줍니다.
전처리 → 컴파일러 → 어셈블러 → 링커
컴퓨터는 0과 1로만 이루어져있기 때문에 컴퓨터가 이해할 수 있도록 만들어 주어야 합니다. 이런 과정을 빌드라고 합니다.
- 전처리(preprocessing) : 코드의 주석을 제거, 헤더 파일을 삽입하고, 메크로를 치환하는 기능을 한다.
- 컴파일(Compilation) : 어셈블리 코드로 변환한다. 어셈블리(저수준 언어)는 CPU 명령어 조합이다. (어휘 분석, 구문 분석, 의미 분석)
- 어셈블리(Assembly) : 0과 1의 기계어로 변환한다. 최종적으로 목적 코드(object file) 생성
- 링킹(Linking) : 오브젝트 파일들을 묶어서 실행 파일로 변환한다. 운영체제가 로딩할 수 있도록 주소 정보를 할당한 파일을 만들어 낸다. 번역된 파일을 하나로 연결해 실행가능한 파일로 만들어준다.
컴파일 언어의 장점
빌드가 완료된 실행가능한 파일은 실행 속도가 빠르다.
- 인터프리터 언어 : 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
- 컴파일 언어 : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
요즘 매일 C++, 컴퓨터구조, 운영체제, 알고리즘, 자료구조, 네트워크를 각각 1시간씩 공부하고 남은 시간에 그날 공부하고 싶은 내용들을 공부 중이라 TIL에 적을 내용이 별로 없어 미루다가 3일치를 한 번에 작성했습니다.. 다음부터는 내용이 적어도 매일 쓰는 것을 목표로 하겠습니다. 업보 청산이 힘드네요
'내일배움캠프 > TIL' 카테고리의 다른 글
[내일배움캠프 Day23] CH2 팀 프로젝트 (3) | 2025.01.17 |
---|---|
[내일배움캠프 Day18] 인라인 함수(inline function) (2) | 2025.01.10 |
[내일배움캠프 Day16] C++ 3주차 과제 진행 (1) | 2025.01.09 |
[내일배움캠프 Day15] 디자인 패턴 - 구조 패턴 (2) | 2025.01.09 |
[내일배움캠프 Day14] 디자인 패턴 - 생성 패턴 (1) | 2025.01.06 |