컴파일러와 링커 , 빌드

About_work·2024년 5월 30일
0

프로그래밍 언어

목록 보기
4/4
  • 컴파일러와 링커는 프로그래밍에서 코드를 실행 가능한 프로그램으로 변환하는 데 필요한 도구입니다.

1. 컴파일러

  • 컴파일러는 고수준 프로그래밍 언어로 작성된 소스 코드 -> 기계어 또는 다른 저수준 언어로 변환하는 프로그램
  • 컴파일러의 주요 작업은 소스 코드를 분석하고, 이를 최적화된 기계 코드로 변환하는 것

예시: C언어 컴파일러

  • 개발자가 C언어로 작성한 소스 코드(main.c)가 있습니다.
  • 이 파일을 컴파일러(예: gcc)에 입력합니다.
  • 컴파일러는 이 소스 코드를 분석하여 중간 코드(어셈블리어)로 변환한 후, 최종적으로 실행 가능한 기계어 코드(main.o)를 생성합니다. 이 파일은 "오브젝트 파일"이라고 불립니다.

2. 링커

  • 링커는 여러 개의 오브젝트 파일 또는 라이브러리를 하나의 실행 파일로 결합하는 프로그램
  • 컴파일러가 생성한 오브젝트 파일들은 독립적으로 실행될 수 없고, 모든 필요한 코드와 데이터가 하나로 결합되어야 프로그램이 실행될 수 있습니다.

예시: 링킹 과정

  • 개발자가 main.o (메인 프로그램), utils.o (유틸리티 함수), libmath.a (수학 연산 라이브러리) 등 여러 오브젝트 파일과 정적 라이브러리를 가지고 있습니다.
  • 링커(예: ld)는 이러한 오브젝트 파일들과 라이브러리를 한데 모아 하나의 실행 파일(program.exe 또는 program)을 생성합니다.
  • 이 과정에서 링커는 필요한 모든 함수의 참조를 해결하고, 필요한 데이터를 모아 실행 파일을 완성합니다.

3. 컴파일과 링킹의 차이점

  • 컴파일러는 소스 코드를 기계어 코드로 변환하는 과정에 집중합니다. 컴파일러는 코드를 분석하고, 오류를 검사하며, 코드를 최적화합니다.
  • 링커는 이미 컴파일된 여러 코드 조각들을 하나로 결합하여 실행 가능한 파일을 만드는 작업을 합니다. 링커는 각 코드 조각 간의 연결 고리를 확립하고, 외부 라이브러리와의 연결을 관리합니다.

4. 빌드

  • 빌드는 소스 코드로부터 실행 가능한 소프트웨어 애플리케이션을 만들어 내는 과정
  • 이 과정에는 소스 코드의 컴파일, 오브젝트 파일의 링킹 등 여러 단계가 포함되며, 이 모든 단계는 컴파일러와 링커와 같은 도구를 사용하여 수행됩니다.

빌드 과정 요약

  1. 컴파일: 컴파일러가 소스 코드를 분석하고, 오류를 검사하며, 최적화된 오브젝트 파일을 생성합니다.
  2. 링크: 링커가 여러 오브젝트 파일과 라이브러리를 결합하여 실행 가능한 파일을 만듭니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글