CS/운영체제

프로그램 컴파일 과정

프론트엔드코린이 2025. 5. 29. 10:02

컴파일이란

프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 된 것을 의미한다.

 

소스 파일(코드) -> preprocessor(전처리과정) -> compiler -> assembler -> Linker(목적코드) -> 실행

전처리

  • 소스코드의 주석제거, #include 등 헤더파일을 병합하고 매크로를 치환하는 과정

컴파일러

  • 오류처리, 코드최적화 작업을 하여 어셈블리어로 변환한다.

어셈블리어

  • 목적코드(object code)로 변환되는데 이때 확장자는 운영체제마다 다른게 변한다.

링커

  • 프로그럄 내 있는 라이브러리 함수 등과 결합해 실행파일이 만들어집니다. 이는 .exe 확장자, .out이라는 확장자를 갖게 된다.

* 요약하자면

✅ 1. 전처리 (Preprocessing)

  • 대상 언어: 주로 C, C++ 같은 언어에서 사용
  • 역할:
    • #include, #define 등의 전처리 지시문을 처리
    • 매크로 치환
    • 불필요한 주석 제거
  • 결과: 전처리된 코드

✅ 2. 컴파일 (Compilation)

  • 역할:
    • 전처리된 코드를 어셈블리어로 변환
    • 문법 오류 체크
    • 변수, 함수 등의 심볼 테이블 생성
  • 결과: 어셈블리 코드 (.s 파일 등)

✅ 3. 어셈블리 (Assembly)

  • 역할:
    • 어셈블리 코드를 **기계어(목적 코드)**로 변환
    • CPU가 이해할 수 있는 이진 코드 생성
  • 결과: 목적 파일 (.o, .obj)

✅ 4. 링크(Linking)

  • 역할:
    • 여러 개의 목적 파일 또는 라이브러리들을 하나로 결합
    • 함수 참조(예: printf)를 실제 메모리 주소로 연결
  • 결과: 실행 가능한 파일 (.exe, a.out, 등)