[CS : 컴퓨터 구조] C 언어의 컴파일 과정

2023. 10. 25. 18:15·Computer Science/컴퓨터 구조

C 언어의 컴파일 과정

1) 전처리기(preprocessor)

  • ( test.c → test.i ) 전처리(preprocess)과정을 실행
  • 전처리 과정 (preprocessing)
    • 본격적으로 컴파일하기 전에 처리할 작업들
    • 외부에 선언된 다양한 소스코드, 라이브러리 포함(e.g. #include)
    • 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define)
    • 컴파일할 영역 명시(e.g. #if, #ifdef, ···) 

2) 컴파일러(compiler)

  • ( test.i  →  test.s ) 컴파일(compile)과정을 실행
  • 컴파일 과정(compiling)
    • 전처리가 완료 되어도 여전히 소스코드이다.
    • 전처리 완료된 소스코드를 저급 언어(어셈블리 언어)로 변환

3) 어셈블러(asembler)

  • ( test.s → test.o ) 어셈블(assemble)과정을 실행
  • 어셈블 과정(assembling)
    • 어셈블리어를 기계어로 변환
    • 목적 코드(object file)를 포함하는 목적 파일이 됨
더보기

목적 파일 vs 실행 파일

  • 목적 파일과 실행 파일은 둘 다 기계어로 이루어진 파일이다.
  • 목적 파일은 링킹(linking)을 거친 이후에야 실행 파일이 된다.
  • 링킹이란 각기 다른 목적 코드를 하나의 실행 파일로서 묶어주는 작업 즉 연결 시켜주는 작업이다.

4) 링커(linker)

  • ( test.o → test.exe ) 링킹(linking)과정을 실행
  • 링킹이란 각기 다른 목적 코드를 하나의 실행 파일로서 묶어주는 작업 즉 연결 시켜주는 작업이다.
  • ex) test.o 라는 목적 파일에 test1.o 라는 목적 파일에 있는 코드가 필요하다면 두가지를 연결시켜주어야 실행시킬수 있는 실행파일이 되기 때문에 이를 위한 과정이 링킹이다. 

 

 

 

 

출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
저작자표시 (새창열림)

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터  (1) 2023.10.29
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치  (0) 2023.10.28
[CS : 컴퓨터 구조] 03-2 명령어의 구조  (1) 2023.10.24
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어  (0) 2023.10.23
[CS : 컴퓨터 구조] 데이터 : 02-2 0과 1로 문자를 표현하는 방법  (0) 2023.10.20
'Computer Science/컴퓨터 구조' 카테고리의 다른 글
  • [CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터
  • [CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치
  • [CS : 컴퓨터 구조] 03-2 명령어의 구조
  • [CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어
JinSeong
JinSeong
재미없으면 안한다.
  • JinSeong
    As you think, so shall you become.
    JinSeong
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 📆 Today I Learned(개발언어학습) (76)
        • JAVA (20)
        • HTML (1)
        • JSP (46)
        • SPRING (2)
        • ORACLE(DB) (6)
        • CSS (1)
      • 📆 Today I Learned(코딩테스트) (0)
        • JAVA (0)
      • Computer Science (9)
        • 컴퓨터 구조 (9)
        • 운영체제 (0)
        • 자료구조 & 알고리즘 (0)
        • 데이터베이스 (0)
      • 창고 (11)
        • 기초지식 (7)
        • 파일창고 (0)
        • 기술지식창고 (0)
        • 버그버그 👀 (4)
      • Tools🔧 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    제어장치
    no converter found for
    java json리턴 에러
    SQL
    java 스케줄러
    DB
    환경변수 차이
    java버전 표현
    명령어
    substring()
    java 객체타입확인
    레지스터
    jdk구분
    spring 스케줄러
    이클립스 오버라이딩 메소드 자동 생성 기능
    instanceof 연산자
    ALU
    CPU
    Oracle
    JAVA문자열자르기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JinSeong
[CS : 컴퓨터 구조] C 언어의 컴파일 과정
상단으로

티스토리툴바