[Computer Science] 프로그램의 빌드

양영준·2026년 1월 15일

Computer Science

목록 보기
4/5
post-thumbnail

📌 빌드 (build) 란?

고수준 언어를 통해 작성한 소스 코드를 기계어로 번역해서 실행 파일을 만들어내는 과정이다.

빌드의 방식은 크게 세가지로 분류 가능하다.

TypeProcess
Compile소스코드 전체를 기계어로 번역한다.
Interpreted소스코드를 한 줄씩 읽으면서 번역하며 실행한다.
Hybrid소스코드 전체를 중간 코드 (바이트 코드)로 번역한 다음 가상머신 (VM) 에서 한 줄씩 실행한다.

컴파일 타입 (Compile Type)

소스코드 전체를 기계어로 번역하여 실행 파일을 만들어내는 빌드 방식
C, C++, Java, Go 등이 컴파일 방식을 채택하는 언어이다.

컴파일 타입의 언어는 총 4가지 단계를 거쳐 빌드를 진행한다.

1. 전처리 (Preprocessing)

  • 컴파일 전 사용자가 작성한 코드가 잘 번역될 수 있도록 단순 치환하는 작업
  • 소스코드에 포함된 전처리 구문 (# 으로 시작하는 구문)을 미리 처리해주는 과정
  • 전처리 과정이 끝나면 소스코드 파일이 .i 파일로 변환

2. 컴파일 (Compiling)

  • 고수준 언어로 작성된 소스코드를 어셈블리어로 1차 번역하는 작업
  • 컴파일 작업이 끝나면 .i 파일이 .s 파일로 변환
  • 어셈블 작업을 하기 전에 .s 파일을 통해 프로그램 내부가 어떻게 작동하는지 확인하거나 하드웨어의 직접적인 조작 및 특수 프로세서 명령어 접근 작업을 진행할 수 있음

3. 어셈블 (Assemble)

  • 컴파일 과정에서 생성된 어셈블리어를 기계어로 변환하는 작업
  • 어셈블 작업이 끝나면 .s 파일이 .o 파일 (목적 파일 (Object File)) 로 변환

4. 링크 (Linking)

  • 어셈블 과정에서 만들어진 목적 파일들을 라이브러리와 연결시키고 하나로 묶어 실행 가능한 파일을 만드는 작업
  • .exe 파일 또는 .dll / .lib (라이브러리 파일) 을 생성

장 / 단점

장점

  1. 실행 속도가 빠르다.
  2. 매번 번역할 필요 없이 실행 파일만 실행하면 동작하기 때문에 시간 면에서 효율적이다.

단점

  1. 프로그램을 수정해야할 경우 처음부터 빌드를 다시 해야하기 때문에 대규모 프로그램에서는 생산성이 떨어진다.
  2. 플랫폼에 매우 의존적이다.
    1) 어셈블리어가 기계어와 1 : 1 매칭이 되어 있기 때문인데, 기계어는 CPU에 의존적이며 CPU 명령 체계가 비슷하지만 완전히 같지 않기 때문
    2) 링크 과정에서 운영체제마다 요구하는 라이브러리가 다르기 때문

인터프리트 타입 (Interpreted Type)

소스코드를 한 줄 단위로 해석하면서 즉시 실행하는 방식
자바스크립트(JavaScript), 파이썬(Python), 루비(Ruby) 등이 대표적
컴파일 타입과의 가장 큰 차이점은 목적 파일 (Object File) 을 생성하지 않는다는 것
각 운영체제에 맞는 해당 단어의 인터프리터 (interpreter) 만 설치하면 어떤 운영체제에서라도 동일한 결과를 얻을 수 있음

장 / 단점

장점

  1. 컴파일 과정 없이 바로 실행하기 때문에 수정 / 디버깅에 용이하다.
    즉, 개발 속도에 유리하다.
  2. 각 플랫폼에 지원하는 인터프리터만 있다면 실행 가능하기 때문에 플랫폼에 독립적 이다.

단점

  1. 컴파일 언어 프로그램보다 실행 시간이 느리다.
    하지만 하드웨어의 스펙이 상승함에 따라 이 차이를 체감하기 힘들다.
  2. 소스코드 그 자체가 실행 파일의 역할을 하기 때문에 보안에 좋지 않다.

하이브리드 타입 (Hybrid Type)

컴파일 타입과 인터프리트 타입을 혼합한 방식
각각의 단점을 상호 보완하여 만들어졌으며 바이트 코드 언어 (Byte Code Language) 라고도 함
자바(Java) 가 대표적

소스코드를 가상머신이 이해할 수 있는 바이트 코드로 컴파일 (컴파일 타입)
가상머신이 해당 바이트 코드를 해석하여 각 운영체제에 맞게 명령어를 해석하고 동작 (인터프리트 타입)
가상머신이 인터프리터의 역할을 하는 것

장 / 단점

장점

  1. 각 플랫폼에 지원하는 가상머신만 있다면 실행 가능하기 때문에 플랫폼에 독립적 이다.

단점

  1. 하드웨어를 직접 제어하는 작업은 불가능하다.

Reference

프로그래밍 언어와 빌드 과정 [Build Process]
빌드란 무언인가? / 빌드의 과정 / 컴파일 언어와 인터프리터 언어
[C] 프로그램 실행 과정 (빌드 과정)
컴파일(Compile)에 대한 이해

profile
학습 내용 정리 순차적 갱신 / 정리 중

0개의 댓글