[C] 프로그램의 빌드 과정

Date:     Updated:

카테고리:

태그:

이 글은 C 프로그램 빌드 과정을 공부하고 정리한 글입니다

📕 빌드란 무엇인가?

  • 사람이 읽기 쉬운 소스코드를 기계어 명령어로 변환하는 과정
  • 명령어들을 모아 기계에서 실행 가능한 실행파일로 만드는 과정

📕 빌드과정

  1. 전처리 (preprocessing)
  2. 컴파일 (compilation)
  3. 어셈블 (assembling)
  4. 링크 (linking)

📖 전처리 (preprocessing)

  • 전처리기라는 프로그램이 담당
  • 처리 과정
    1. 주석 제거
    2. 매크로를 복사붙여넣기
    3. 인클루드 파일들을 복사붙여넣기
  • 출력 : 확장된 소스코드 (트랜슬레이션 유닛)

📖 컴파일 (compilation)

  • 컴파일러라는 프로그램이 담당
  • 출력 : 전처리 과정에서 나온 트랜슬레이션 유닛을 어셈블리어 코드로 만든다
    • 어셈블리어 코드 : 기계 코드와 거의 1:1로 대응한다(하드웨어에 아주 가까움)
  • 어셈블리어 코드는 아직 정의를 모르는 심볼을 사용할 수 있음
    • 심볼(symbol) : 함수나 변수의 이름 등
    • 이것이 바로 헤더를 통한 선언만으로 컴파일이 가능한 이유
  • 컴파일러가 어떤 함수나 변수의 정의를 못 찾을 경우
    • 함수나 변수의 주소를 구멍으로 남겨둔다
    • 그 남겨진 구멍을 메꾸는 건 링크단계에서 해준다

📖 어셈블 (assembling)

  • 어셈블러라는 프로그램이 담당
  • 출력 : 컴파일 과정에서 나온 어셈블리어 코드를 오브젝트 코드로 만든다
    • 오브젝트 코드 : 기계가 곧바로 이해 가능한 기계코드(이진코드)

📖 링크 (linking)

  • 링커라는 프로그램이 담당
  • 모든 오브젝트 코드들을 모아 구멍을 메꾼 뒤 실행파일로 저장
  • 이 과정에서 함수 주소를 찾아 구멍을 메꾸어 주고
    • 만약 정의를 찾지못해서 남아있는 구멍이 있다면 링커 오류를 낸다


참조

포큐아카데미 C 언매니지드 프로그래밍



💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

C 카테고리 내 다른 글 보러가기

댓글 남기기