본문 바로가기
자바

컴파일과 빌드의 차이

by N.Damgom 2021. 7. 23.

 

IDE에 익숙해진 초보 프로그래머들에게는 컴파일과 빌드의 차이는 애매모호하다. 

 

잡지를 만드는 과정을 예로 들어 이해해보자.

 

어느날 PanGyo는 마음에 드는 잡지를 발견했다. 다만 아쉬운 점은 그 잡지가 영어로된 잡지여서 친구들과 같이 읽을 수 없다는 점이었다.

 

그래서 PanGyo는 영어로된 잡지를 한글로 번역해 출판하기로 마음먹었다.

 

출판하는 과정을 하나씩 살펴보자.

 

 

 

 

잡지는 영어로된 여러 기사들로 이루어져 있고, 각 기사에는 잡지내 다른 기사를 참조하는 경우가 잦다.

 

첫번째로 할 일은 각 기사를 한글로 번역하는 일이다. 기사를 영어에서 한글로 번역하면 친구들과 같이 읽을 수 있다.

 

두번째로 할 일은 원래 기사와 번역된 기사를 연결짓는 일이다.

 

예를 들어 "영문기사 A"가 번역되어 "한글기사 가"가 된 상황을 생각해보자.

 

"영문기사 B"에서 "추가적인 내용은 '영문기사 A'를 참고하세요"라는 문장이 있다면 "영문기사 B"가 번역된 "한글기사 나"에서의 해당 문장은 "추가적인 내용은 '한글기사 가'를 참고하세요"가 되어야한다.

 

이처럼 기사 내용 자체를 번역하는 것 뿐만 아니라 번역된 기사가 어떤 이름의 기사가 되었는지 연결짓는 것도 중요하다.

 

세번째로 할 일은 번역된 기사들을 하나로 묶는 일이다. 기사의 순서를 정해 잡지 한 권으로 합본하고, 어디서부터 읽으면 좋을지 표시한다.

 

 

 

잡지를 만드는 과정은 프로그램을 만드는 일과 비슷하다.

 

첫번째로 했던 일은 기사를 한글로 번역하는 일이다. 

 

소스코드를 기계가 읽을 수 있게끔 기계어로 번역한다. 이 과정을 컴파일이라고 한다.

 

두번째로 했던 일은 번역된 기사를 서로 연결짓는 과정이다.

 

한 파일에 있는 소스코드는 다른 파일에 있는 소스코드를 참조하는 경우가 많다. 소스코드 간 서로 참조할 수 있게끔 엮는 과정을 링킹이라고 한다.

 

보통 컴파일과 링킹을 하나로 묶어서 컴파일이라고 한다. 링킹은 링커가 담당하는데, 보통 컴파일러 내에 포함되어 있다.

 

세번째로 했던 일은 기사들을 잡지 한 권으로 묶는 일이다.

 

컴파일된 소스코드들과 여러 리소스(프로그램 내 설정파일 등)를 하나로 묶어 하나의 실행 파일로 만든다.

 

이 과정을 빌드라고 한다. 혹은 컴파일부터 빌드까지 전 과정을 빌드라고 통칭하기도 한다.

 

IDE에서 코딩하고 Run을 누르면 컴파일부터 빌드, 그리고 프로그램 실행까지 한번에 진행된다.

 

정말로 편리하지만 각 과정을 모르고 넘어가면 오류에 대처하기 어렵다.