CS/내 생각 정리

[컴퓨터 구조+운영체제] Hello World 가 출력 되기까지 (1)

아모르AMORE 2024. 8. 16. 21:31
#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