컴파일링
1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("hello,world!");
}
컴파일러가 프로그램을 실행하는 순서는 다음과 같다.
preprocessing(전처리과정)
#로 시작되는 코드는 컴파일러가 main()안에 있는 코드를 실행하기 전에 무언가를 실행하도록 알려준다. 예를 들어 #include는 <>안에 있는 헤더파일의 내용을 포함하여 코드를 실행하라고 알려준다. (ex. stdio.h파일 안에있는 printf프로토타입을 가져와라)compiling
이 과정에서 컴파일러는 코드를 C, python등과 같은 프로그래밍 언어를 컴퓨터가 이해할 수 있는 언어와 가까운 어셈블리 언어로 변환한다.
즉, 전처리한 소스 코드를 어셈블리 코드로 변환시키는 단계이다.assembling
어셈블러가 어셈블리 코드를 오브젝트 코드로 변환시키는 단계이다. 오브젝트 코드는 0,1로 이루어져 있어 컴퓨터의 CPU는 오브젝트 코드로 프로그램의 명령어를 해석한다. 위의 예시코드와 같이 소스 코드에서 오브젝트 코드로 컴파일 되어야 파일이 하나면 컴파일작업은 여기에서 종료된다.linking
그러나 math.h와 같은 라이브러리가 더 있으면 여러 개 오브젝트 파일이 생겨나고 이를 하나의 오브젝트 파일로 합치는 과정이다.
이 과정들을 통하여 우리는 실행할 수 있는 파일을 얻을 수 있다.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.