티스토리 뷰

Development/Overall

컴파일과 빌드

KimDoubleB 2021. 1. 21. 22:19
반응형

프로젝트를 하며 단순히 결과물을 만들어내는 것에 찌들어 살다보면 그 내부적인 원리는 모른 채 누군가 만들어 놓은 것들을 활용하고만 있는 나를 발견하곤 한다. 그런 나를 내부적인 원리 지식들과 기초적인 CS 지식들로 하여금 채찍질하기 위하여 이렇게 차근차근 조그마한 것들을 적자.


컴파일 Compile

개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정

 

다시 말해, 개발자가 이해할 수 있는 프로그래밍 코드들을 컴퓨터가 이해할 수 있도록 기계어로 변환하는 작업을 의미한다. 이러한 작업을 해주는 프로그램을 컴파일러(Compiler)라고 한다.

Java의 경우, JVM(Java Virtual Machine)에서 실행 가능한 바이트 코드 형태의 클래스파일이 생성된다.


링크 Link

분리된 소스파일들을 컴파일 결과물에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분들을 연결해주는 작업

 

프로젝트에서 Alpha라는 소스파일에서 Beta라는 소스파일의 메서드를 호출한다고 가정해보자. 이 때, Alpha와 Beta 소스파일을 각각 컴파일하게 되면 Alpha에서는 Beta의 메서드를 찾지 못하기 때문에 호출이 불가능해진다. 그래서 Alpha와 Beta를 연결해주는 작업이 필요한데, 이를 링크라고 한다.

 

링크는 정적 링크(Static)와 동적 링크(Dynamic)으로 나뉜다.

정적 링크는 컴파일된 소스파일을 연결해 실행 가능한 파일을 만드는 것을 의미하고, 동적링크란 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아 연결하는 것을 의미한다.


빌드 Build

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

더 넓게 말하면, 소스코드 파일을 실제 실행할 수 있는 상태로 만드는 일이라고 할 수 있다.

 

그럼, 이게 컴파일과 뭐가 다르냐고 할 수 있겠다. 컴파일은 단순히 소스의 문법을 분석하여 기계어로 번역하는 것과 그 과정을 의미하고, 빌드는 이런 번역과정을 포함해 관련된 것들을 모아 실행 가능한 파일로 만드는 것을 의미한다.

 

즉, 컴파일은 빌드의 과정에 속한다고 보면 된다.


빌드 툴 Build Tool

소스코드를 컴파일, 테스트, 분석 등 실시하여 실행 가능한 애플리케이션으로 자동 생성해주는 프로그램

 

애플리케이션을 개발하며 계속 늘어나는 라이브러리들을 자동 추가 및 관리해주며, 시간이 지남에 따라 라이브러리 버전을 최신 버전으로 자동 동기화 시켜주는 역할을 한다.

 

빌드 툴에는 Ant, Maven, Gradle 등이 있다.

이것도 많은 역사와 지식들이 존재하는데, Java 공부를 더하고 꼭 다시 봐야겠다.

빌드 툴 참고: starrykss.tistory.com/276

 

320x100
반응형

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

git tag가 어떤 branch로부터 만들어졌을까?  (0) 2022.05.04
ACID  (0) 2022.03.12
여러가지 프로그래밍 언어의 Type casting  (0) 2021.01.22
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함