728x90
반응형

게으름을 피우지 말자 & 겸손하자


안녕하세요. r-son입니다.


오늘은 간단하면서도 개발자라면 놓쳐서는 안될 빌드와 컴파일의 의미에 대해서 알아보고자 합니다.



결론부터 말하면,

컴파일러는 소스코드를 목적파일로 변환해주는 과정을 말하며 빌드의 일부분입니다.

아래의 설명을 읽어보시면 쉽게 이해될 거에요~


컴파일(Compile)

      - 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정을 말합니다. (목적 파일이 생성됨)

      - 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 가능하게 해주는 것이 컴파일러입니다.

      - 자바에서는 컴파일을 할 경우, JVM에서 실행가능한 바이트코드 형태의 클래스 파일이 생성됩니다. 

        .java라는 자바 클래스 파일을 바탕으로 .class라는 클래스 파일이 생성되죠~


빌드(Build)

      - 소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.

      - 빌드의 단계 중 컴파일이 포함 되어 있는데 컴파일은 빌드의 부분집합이라 할 수 있다.

      - 빌드 과정을 도와주는 도구를 빌드 툴이라 한다.

      - 또한, 빌드 툴이 제공해주는 기능들로는 

        전처리(preprocessing), 컴파일(Compile), 패키징(packaging), 테스팅(testing), 배포(distribution)이 있습니다.

        빌드 툴(Build Tool)에는 Ant, Maven, Gradle 등이 있습니다.



컴파일과 빌드의 의미를 찾다보면 링크라는 녀석도 나오죠~


링크(Link)

- 프로젝트 내 여러 개의 소스파일이 생성되고 A라는 소스파일에서 B라는 소스파일에 존재하는 함수(메서드)를 호출하는 경우가 존재

      - 이때 A와 B 소스파일 각각을 컴파일만 하면 A가 B에 존재하는 함수를 찾질 못하기 때문에 호출할 수가 없습니다.

      - 따라서 A와  B를 연결해주는 작업을 링크라고 합니다. 즉, 여러 개로 분리된 소스파일들을 컴파일한 결과물에서 최종 실행가능한 파일을 

        만들기 위해 필요한 부분을 찾아서 연결해주는 작업을 링크라고 합니다..

      - 링크는 정적링크(static link)와 동적링크(dynamic link)가 있는데, 정적 링크는 컴파일된 소스파일을 연결해서 실행가능한 파일을 

        만드는 것이고 동적링크란 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아서 연결하는 작업입니다.

        쉬운 예로 자바에서는 JVM이 프로그램 실행 도중 필요한 클래스를 찾아서 클래스패스에 로드해주는데 이는 동적링크의 예이다.



이상으로 빌드와 컴파일 그리고 링크에 대해서 알아보았습니다~


-끝-




728x90
반응형

'Development > Build' 카테고리의 다른 글

젠킨스(jenkins) 버전 업그레이드 방법  (0) 2019.03.20

+ Recent posts