본문 바로가기

etc

[컴공] 컴파일과 빌드는 같을까?

728x90

/** 이 카테고리는 궁금증을 안고 시작한 구글링 또는 서적파기를 통해 본인이 깨달은 과정과 결과를 서사식으로 풀어내어 다소 글이 길수도 있다는 점을 양해드립니다. 또한 제가 얘기하고 있는 개념 중에서 잘못 알고 있는 점들이 있다면 댓글로 알려주시면 대단히 감사드리겠습니다!

바쁘신 분들이나 빨리 개념을 알아내고 싶으신 분들은 굵은 글씨 또는 정리된 테이블을 읽고 가셔도 무방합니다.

그렇지 않은 분들은 커피 한잔하면서 지인과 얘기하고 있다는(?) 생각으로 천천히 읽고 가셨으면 좋겠습니다. :)

(댓글 하나는 저자에게 아주 큰 힘이 됩니다~~) **/

 

이클립스로 지인(컴공과..)과 소소한 프로젝트를 진행 중인데 깃허브에 있는 프로젝트를 로컬에 연결하는 것 까진 이해가 되는데 그후에 import로 이클립스 workspace에 추가하지않고 굳이 Gradle 안에서 import를 하는지 의문이였다. 

 

사실 구글링 전까진 Gradle이 "빌드 자동화 시스템" 인지도 몰랐다. 그냥 왜 쓰는지 단순한 궁금증에서 출발하여 Gradle이 빌드하는데 도와주는 프로그램인 걸 알았다.

 

궁금증은 여기서 그치지 않고 가지를 뻗었는데 그간 퍼블리싱만 하다 개발자 신입으로 진입하는 요근래에 데이터 바인딩을 조금씩 해보면서 실무에서는 비주얼 스튜디오를 사용하는데 빌드를 하라는 말들을 자주 들었던 것이 생각이 났다. 

도대체 프로그램을 짜면서 빌드를 하는 정확한 이유가 무엇인지 꼬집고 싶었다. 구글링을 하다가 빌드를 컴파일 개념과 묶어서 설명해놓은 사이트 들이 많이 보였다. 그 순간 또한 정보처리기사 필기 시험을 준비하면서 "컴파일"이라는 단어와 개념을 알게 되었던 것이 떠올랐다.

 

아래는 공부 후에 알게된 개념이다.

 

컴파일(Compile) 빌드(Build)

고급어를 저급어로 해석

컴퓨터는 저급어(인간이 만든 개념 진짜 저급하다는거 아님..)로 이루어져 있고 사람이 개발한 언어는 고급어이므로 컴퓨터에게 그냥 줘버리면 알아듣지를 못한다. 

따라서 한번 해석이 필요한데 그 행위를 컴파일이라 한다.

예를 들어 불어를 하는 사람에게 한국어로 대화를 시도하는 것과 같다. 그렇게 되면 컴퓨터는 에러메세지를 뱉어낸다.

- 참고 : 컴파일러는 인터프리터와 구분된다. (다음 글에서 자세히...)

컴파일된 해당 파일을 실행 가능한 상태로 만드는 것

컴파일을 한 것과 소스, 그림, 아이콘 경로 등 연결된 잡다한 것들을 모아서 필요한 소스와 파일이 있는지 체크 후에 해당 파일을 실행 가능하게 한다. 

만약 필요한 소스, 파일이 없다면 빌드되지않고 에러가 발생한다.

ex) Gradle(빌드 자동화 시스템)

* 고급어 : 사람이 사용하고 알아들을 수 있는 언어 (C, C++, C#, java, php ...)

* 저급어 : 컴퓨터가 사용하고 알아들을 수 있는 언어 (어셈블리어, 기계어)

 

참고 : 

http://twinbraid.blogspot.com/2015/02/blog-post.html#comment-form

 

컴파일과 빌드의 개념

보통 초보들.. 특히 최근에 시작한 초보들은 컴파일과 빌드의 차이를 모르는 경우가 많다 왜냐면 툴들이 워낙 좋아져서 그 둘을 동시에 Run 하나로 퉁치기 때문이다 당연히 본인도 Compile, Build 에 대해서 잘 몰랐고 그닥 알고 ...

twinbraid.blogspot.com