컴파일, 링킹, 빌드

윤찬호·2022년 11월 1일
0

1. 컴파일 (Compile)

사람이 이해할 수 있는 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸어 주는 과정
소스 코드를 컴파일한 결과물을 목적 코드(Object Code) 또는 목적 파일(Object File) 이라고 한다.

Java의 경우 컴파일의 결과로 JVM(자바 가상 머신)에서 실행 가능한 class파일이 생성된다.
A.java ---컴파일---> A.class

C/C++의 경우 컴파일의 결과로 obj파일이 생성된다.
A.c ---컴파일---> A.obj


2. 링킹 (Linking)

A라는 소스 파일의 함수를 B라는 소스 파일에서 사용하는 경우 A와 B 소스 파일을 각각 컴파일 하면 B에서 A의 함수를 찾지 못하게 된다. 이런 경우에 A와 B를 연결해주는 작업이 필요한데 이를 링킹 이라고 하고 링킹 작업은 링커(Linker)를 통해 이뤄진다. 즉, 여러 개의 목적 코드 및 라이브러리 파일들을 서로 연결해주는 과정이다.

링크는 정적 링크와 동적 링크로 나누어 볼 수 있다.

정적 링크
컴파일된 목적 파일을 연결해서 실행 가능한 파일을 만드는 것

동적 링크
프로그램 실행 중 프로그램 외부에 존재하는 코드를 찾아 연결하는 것


3. 빌드 (build)

소스 파일을 컴퓨터에서 실행할 수 있는 형태로 변환하는 과정
소스 파일을 컴파일 하여 목적 파일을 생성하고 링크 과정을 거쳐 실행 가능한 파일을 만들어 내는 과정을 의미한다.



4. C언어 컴파일 과정 (gcc)

C언어의 경우 위에서 설명된 컴파일/빌드 과정에서 전처리 과정과 어셈블러 과정이 추가된다.


참고 자료
https://ee-22-joo.tistory.com/34
https://jhnyang.tistory.com/40
https://gracefulprograming.tistory.com/16

0개의 댓글