#include <stdio.h>
int main(void) {
printf("Hello World\n");
}
오늘은 C 를 처음 배우면서, 환경 세팅을 위해 위의 코드를 교재를 보고 따라 쳐 보았다.
지금까지 머릿속에 있는 내용은 아래와 같았다.
프로그래머는 소스 코드를 작성한다.
Run 버튼을 누른다.
Hello World
가 출력된다.
이 과정을 당연하게만 생각했었는데, 코드 작성 창 하단에 출력되는 것은 단순히 Hello World 가 아니었다.
오후 9:03에 빌드를 시작함...
1>------ 빌드 시작: 프로젝트: ch2, 구성: Debug x64 ------
1>example.c
1>ch2.vcxproj -> source\repos\ch2\x64\Debug\ch2.exe
========== 빌드: 1개 성공, 0개 실패, 0개 최신 상태, 0개 건너뜀 ==========
========== 빌드이(가) 오후 9:03에 완료되었으며, 01.820 초이(가) 걸림 ==========
그리고 새로운 콘솔 창이 나오면서,
내가 생각하던
Hello World
가 출력되었다.
프로그램이 실행되고 값이 출력된다는 건 어떤 걸까 ? 빌드 라는 게 뭘까 ?
라는 궁금증이 들었다.
빌드는 뭘까 ?
빌드(build)는 소스 코드를 실행 가능한 프로그램으로 변환하는 과정
위의 로그를 보면, 빌드가 3단계로 이루어져 있다는 것을 파악할 수 있었다.
1단계 | 컴파일
1>example.c
소스 코드(example.c)가 컴파일러에 의해 기계어로 변환됩니다.
이 과정에서 컴파일러는 코드에 오류가 없는지 확인하고, 문제가 없다면 기계어로 변환된 오브젝트 파일(.obj)을 생성합니다.
2단계 | 링킹
1>ch2.vcxproj -> source\repos\ch2\x64\Debug\ch2.exe
컴파일된 오브젝트 파일과 프로그램에서 사용하는 라이브러리들이 링크됩니다.
이 때 #include 가 실행되면서 필요한 printf 와 같은 메서드 들이 합쳐지는 것 같다.
이 과정에서 프로그램이 실행될 때 필요한 모든 코드가 하나로 결합됩니다.
결과적으로 실행 가능한 파일(이 경우에는 ch2.exe)이 생성됩니다.
3단계 | 빌드 성공 여부 확인
========== 빌드: 1개 성공, 0개 실패, 0개 최신 상태, 0개 건너뜀 ==========
========== 빌드이(가) 오후 9:03에 완료되었으며, 01.820 초이(가) 걸림 ==========
그럼 이제 새로운 콘솔 창이 나오면서 Hello World 가 출력되고 프로세스 가 종료되었다는 내용을 다음 글에서 더 자세히 알아보자.
만들어진 .exe 라는 실행 파일은 어떻게 되는 걸까 ?
'CS > 내 생각 정리' 카테고리의 다른 글
[자료구조] 해싱 (0) | 2024.08.13 |
---|---|
[CS] 캐싱(Caching) = 배민 한집배달 (1) | 2024.01.05 |