- 순서
- 빌드란?
- 빌드의 종류
- 빌드 과정
- 빌드란?
- 컴퓨터는 2진법으로 0과 1밖에 모르기 때문에 코드를 컴퓨터가 이해할 수 있도록 기계어로 번역하여, 실행 가능한 파일로 만드는 과정
- 우리가 만든 소스코드를 빌드라는 과정을 통해 실행 파일을 얻음. 이렇게 얻은 실행파일은 컴퓨터가 읽을 수 있는 이진코드인 기계어로 이루어져있음.
- 빌드의 종류
- Compile Type: 소스코드 전체를 기계어로 번역함
- Interpreted Type: 소스코드를 한 줄씩 번역하면서 실행함
- Hybrid Type: 소스코드 전체를 중간코드(바이트 코드)로 번역한 뒤 가상머신(VM)에서 한 줄씩 실행함
- 빌드 과정
- CompileType의 빌드과정
- 전처리(Processing)
- #include, #define, #if같은 지시문들을 처리함
- 헤더 파일을 불러오고, 매크로를 치환하며, 조건부 컴파일을 실행하여 순수한 소스 코드를 만들어냄
- 컴파일(Compilation)
- 전처리된 소스를 바탕으로 어휘 분석(Lexical Analysis), 구문 분석(Syntax Analysis), 의미 분석(Semantic Analysis)을 수행함
- 사람이 읽을 수 있는 소스코드를 기계어로 직접 바꾸는 게 아니라 중간 단계의 어셈블리어로 변환
- 각 .cpp 파일마다 .obj 또는 .o같은 목적 파일이 생성
- 어셈블(Assemble)
- 어셈블리 코드를 실제 CPU가 이해할 수 있는 기계어(바이너리 코드)로 변환
- 해당 단계에서 보통 컴파일러 내부에서 자동 처리됨
- 결과 .obj/.o 파일이 CPU 아키텍처에 맞는 기계어를 포함하게
- 링킹(Linking)
- 여러개의 .obj/.o 파일을 하나로 합침
- 외부 라이브러리(.lib, .dll, .so 등)와 연결
- 심볼(함수, 변수) 참조를 해결 > 정의도니 코드와 연결
- 결과적으로 실행 가능한 최종 바이너라 혹은 라이브러리 생성
- 컴파일 언어의 장점
- 빌드가 완료된 실행가능한 파일은 실행 속도가 빠릅니다.
- 매번 번역할 필요 없이 실행 파일만 실행하면 되기 때문에 전체적인 시간면에서 효율적임.
- 컴파일 언어의 단점
- 프로그램을 수정해야 할 경우 처음부터 빌드과정을 다시 거쳐야하기 때문에 특히나 대규모 프로그램에서는 생산성이 떨어짐.
- 플랫폼에 매우 의존적임.
- 전처리(Processing)
- CompileType의 빌드과정
'CS' 카테고리의 다른 글
| [CS] 프로세스와 스레드 (2) | 2025.08.28 |
|---|---|
| [CS]메모리 단편화 (1) | 2025.08.28 |
| [CS]프로세스의 메모리 (1) | 2025.08.27 |
| [CS] CPU와 GPU (4) | 2025.08.26 |
| [CS] 컴퓨터의 메모리 구조 (4) | 2025.08.22 |