Learning
When: 1학년 11월 8일
Understanding:
- 간단 설명: c++에서 프로그래머가 소스 코드를 짠 후에 그것이 실행되려면,
그 소스 코드로 이루어진 파일을 입맛이 까다로운 CPU가 받아먹을 수 있게 전처리기, 컴파일러 같은 요리사가
잘 조리해야 합니다. 그 조리 과정을 빌드라고 하는데, 조리 과정은 총 4단계로 구성되어 있으며
음식을 씻지도 않고 냄비에 넣어버리면 안 되듯이 각각의 과정에는 순서가 있습니다.
(예전엔 확실히 4단계였지만 요즘은 3번이 2번에 포함되어서 3개라고 할 수도 있긴 합니다.)

- 순서:
- 전처리: 일단 프로그래머가 코딩을 하면 소스 코드가 생기고, 그 소스 코드엔 include, #define 같이
소스 코드를 바꿔줘야 하는 코드가 있습니다. include은 include뒤에 오는 소스 코드를 붙여 넣기 하고,
#define은 키워드를 값으로 바꿔줍니다. - 컴파일: 전처리기가 전처리를 하며 프로그래머가 읽기 좋게 줄였던 코드들을 쫙 펼쳐놓은 후,
이 코드를 고수준 언어에서 저수준 언어(어셈블리어)로 바꿔줍니다. - 어셈블: 컴파일러를 통해 어셈블리어로 번역된 언어를 어셈블러를 이용하여 목적 코드인
오브젝트 파일로 바꿔줍니다. 요즘은 컴파일 단계에서 어셈블까지 하기도 합니다. - 링킹: 프로젝트에 파일이 하나만 있지는 않기 때문에 링커는 어셈블러를 통해 받은 목적 코드들을
전부 합쳐서 CPU가 읽기 좋은 .exe 파일(실행 파일)로 바꿔줍니다.
- 전처리: 일단 프로그래머가 코딩을 하면 소스 코드가 생기고, 그 소스 코드엔 include, #define 같이
Result: 전처리기, 컴파일러, 어셈블러, 링커, CPU를 다 본 적은 있지만 실제로 정확히 언제 어떤 일을 하는지는 몰랐는데, 알고 나니까 퍼즐이 맞춰지는 느낌이라 좋았습니다.
'C++' 카테고리의 다른 글
| [C++] 포인터, delete (0) | 2025.12.01 |
|---|---|
| [C++] 입력과 출력 (0) | 2025.11.14 |
| [C++] signed, unsigned 키워드, 2의 보수 (0) | 2025.11.13 |
| [C++] class와 struct (C# 하던 사람 관점) (0) | 2025.11.10 |
| [C++] 전처리 지시문(Preprocessor directives) (0) | 2025.11.09 |