빌드(build)란?
빌드의 뜻은 소스코드를 기계가 이해할 수 있는 기계어로 변환해 주는 과정으로 명령어를 모두 모아서 실행 가능한 실행파일로 만드는 과정으로 세부적으로 나누면 4가지로 나뉘어진다.
- 전처리(Preprocessing)
- 컴파일(Compilation)
- 어셈블(Assembling)
- 링크(Linking)
빌드안에 컴파일이랑 링크가 속해있는 것으로 보면 된다.
사람마다 전처리,컴파일,어셈블전체를 컴파일로 불러서 빌드 단계를 두 단계로 보는 경우도 있다.
- 컴파일
- 링크
컴파일(Compile)이란?
컴파일러가 전처리기가 처리해준 소스 코드를 이용해서 어셈블리어로 바꿔주는 과정을 말한다.
어셈블리어는 기계어와 1:1로 대응이 되는 언어로 하드웨어에 가까운 언어이다.
어셈블리어를 기계어라고 부르기에는 조금 어렵다. 기계어는 말그대로 기계가 읽을 수있는 이진형태의 언어를 말하는데 어셈블리어는 이진형태로 되어있는 것이 아닌 텍스트파일로 되어있어서 사람이 읽는 것은 가능하다. 하지만 기계어에 가깝다보니 읽기가 힘든 것일 뿐이다.(기계도 못 읽는다)
링크(Linking)란?
컴파일, 어셈블을 다하고 나면 나오는 오브젝트 코드가 있는데 이 오브젝트 코드들을 모두 모아서 컴퓨터가 실행할 수 있게 실행파일로 만들어주는 역할을 한다.
이렇게만 설명을 한다면 하나의 과정을 한번에 해서 한번에 실행파일을 만들면 되지 않느냐고 질문을 할 수도 있다. 그래서 다음 글에서는 각각의 과정을 좀 더 세부적으로 설명하고 각각의 과정을 나누어 놓은 이유를 설명하겠다.
결론
빌드과정안에 컴파일과 링크라는 과정이 있다.
컴파일 과정은 소스코드를 어셈블리어로 변환시켜주는 과정이다.
링크 과정은 모든 오브젝트 코드를 합쳐서 실행파일로 만들어 주는 과정이다.
출처 : POCU Academy COMP2200
'C언어 > C언어' 카테고리의 다른 글
[C언어]전처리(Preprocessing) 단계 (0) | 2023.02.16 |
---|---|
[C언어]C언어에서 헤더파일이 필요한 이유?(헤더파일 필요성) (0) | 2023.02.16 |
[C언어]인클루드 가드의 뜻과 사용법(헤더가 꼬일 때,업계표준) (0) | 2023.02.15 |
[C언어]#include <> 와 #include " " 차이 (0) | 2023.02.15 |
[C언어]암시적 형변환 C99표준(size_t(=unsigned int) 와 int 연산할 때 형변환포함) (0) | 2023.01.13 |
댓글