빌드와 컴파일러 

1.컴파일이란?

 컴파일(Compile)이란 인간이 읽기 편하게 만든 코드를 기계가 읽을 수 있는 언어로 바꿔주는 것입니다.

 예를 들면


 위와 같은 코드는 우리 인간이 읽고 이해할 수 있도록 영어 단어로 만들어진 코드입니다.

 처음 배운다면 이해할 수 없겠지만 배우다보면 영어 단어와 연결해서 유추하고 사용할 수 있게 말이죠.

 하지만 컴퓨터는 0과 1로된 이진수로 통신한다고 들어보셨을겁니다.

 때문에 위의 코드처럼 복잡한 영단어를 컴퓨터에게 직접 통신하고 사용하도록 할 수는 없겠죠?

 그래서 컴퓨터가 이해할 수 있는 언어로 바꿔주는 작업이 필요한데, 이런 작업을 컴파일이라고 합니다.

 

2.컴파일 (Compile : 사람의 언어를 컴퓨터 언어로 바꿔주는 작업)

 컴파일은 컴파일러(compiler)가 하게 됩니다. JAVA는 기본적으로 JDK를 설치하면서 봤던 javac가 컴파일러입니다. 재미있게도 이클립스(eclipse)를 설치하게되면 eclipse는 자체 컴파일러가 존재한다는 것입니다. 그렇기 때문에 eclipse에서 컴파일 된 프로그램도 javac에서 컴파일되지 않는 경우가 발생하기도 합니다.

 잠시 다른 이야기로 샜지만 돌아와서, 이 컴파일러들은 특정 프로그래밍언어(JAVA나 C++같은)로 만들어진 문서를 목적코드(여기에서는 컴퓨터가 처리할 수 있는 언어)로 변환시킵니다.

 이렇게 만들어진 파일은 Object 파일로 만들어집니다.

 

3.링크 (link : Object 파일들과 라이브러리등을 연결)

 컴파일이 끝나면, 어쩌면 나눠져있는 Object 파일들이나 다른 파일들을 엮어주는 작업이 필요한데, 이 작업을 링킹(Linking)이라고 합니다.

 사실 우리가 일반적으로 프로그래밍을 하면서 모든 작업들을 프로그래밍하지는 않습니다. 예를들면 키보드 입력에 대한 Scanner를 쓰지만 어떻게 키보드가 입력되고 그것을 읽는지에 대한 프로그래밍을 따로 하지는 않습니다.

 그 이유는 키보드 입력에 대한 이벤트나 작업에 대해 표준 라이브러리(Standard library)가 제공되기 때문입니다.

 이렇게 링크는 프로그래머가 직접 만든 소스코드들을 연결시키는 작업을 하기도 하지만 이런 제공되는 라이브러리들을 연결시켜주는 역할도 합니다.

 

4.디버그 (debug : 오류 검사)

 자신이 생각한대로 프로그래밍을 했다고 해서 원하는 결과가 바로 나오지 않을 수 있습니다.

 단순히, 프로그래밍 과정에서 오타를 내서 오류가 발생하거나 실행 과정에서 예상치 못한 예외(exception)가 발생할 수 있습니다.

 이런 것들을 찾아서 오류들을 바로잡아주는 작업이 필요한데 이를 디버그(debug)라고 합니다.

 

5.빌드 (build)

 위의 과정들을 차례대로 실행하는 과정을 빌드(build)라고 합니다.

 정리하자면 원시코드(사용자가  만든 소스코드) → 컴파일 → 링크 → 실행파일 실행 하는 과정을 우리는 '빌드한다' 라고 합니다.

 여담으로 단순히 만들어진 실행파일을 위와 같은 복잡한 절차를 다시 거치지 않고 실행하는 것을 Run 혹은  excute라고 합니다.

  


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기