JAVA

링킹 Linking & 링커 Linker

수달하나 2024. 5. 11. 10:53

배포 단위 : Component

자바의 경우 JAR 파일, 이러한 배포 단위를 서로 링크하여 실행 가능한 단일 파일로 생성할 수 있으며 배포의 단위를 컴포넌트 라고 정의한다.

그럼 "링크한다" 는 것은 배포 가능한 파일들을 단일 파일로 패키징하는 과정을 의미하고 이 과정을 통해서 프로그램의 배포 및 실행을 더욱 편리하게 만들 수 있다.

 

우리는 이 과정을 빌드도구 ex) Gradel, Maven 혹은 플러그인을 사용하여 수행한다.

하지만 이 과정을 도와주는 위와 같은 툴은 링킹을 도와주는 도구 일 뿐 실제로 링커의 역할을 하지는 않는다.

 

링커 : Linker

링커는 하나이상의 목적파일을 가져와서 이를 단일 실행 프로그램으로 병합하는 프로그램이다.

주 기억장치에 메모리 확보 후 할당, 연결(Linking), 재배치(Relocation), 프로그램 연결 적재(Loading) 과 같은 기능을 수행한다.

링킹을 담당 하는 것이 링커이다.

 

 

즉 거대한 프로그램을 하나의 소스파일이 아니라 수많은 소스 파일로 모듈화 하여 개발을 진행할 수 있도록 도와주며, 모듈 중 한개를 변경 할 때 다른 파일들을 재컴파일 할 필요 없이 이 파일만을 간단히 재 컴파일하고 이를 다시 링크하여 변경사항을적용시킬 수 있도록 할 수 있다.

 

Spring Boot 를 통한 배포 

링커가 링킹(Linking) 과정을 통해 여러개의 목적파일을 실행파일로 묶고 생성된 실행파일을 메모리상에 위치 시키는 역할을 한다는 것을 알아냈다.

 

그럼 링커의 역할을 하는 것이 무엇일까 생각해야한다.