C언어 컴파일 과정

문성원·2024년 1월 17일
0

C/C++

목록 보기
2/3
post-thumbnail

[라이브러리 정의]

  • 다른 프로그램들과 링크되기 위하여 존재하는, 하나 이상의 서브 루틴(subroutine)이나 함수(function) 들의 집합 파일
  • 모든 요소들이 함께 링크(Link) 될 수 있도록 보통 컴파일된 형태인 목적 코드(object code) 형태로 존재
  • 라이브러리는 코드 재사용을 위해 조직화된 오래된 기법 중 하나
  • 운영 체제 및 소프트 웨어 개발 환경 제공자들에 의해 제공되는 경우가 많으며, 보통 목적 코드 형태를 하나의 파일로 묶어 사용됨

[라이브러리가 생긴 이유]

  • 코드의 재사용
  • 코드의 부품화 실현
  • 소스를 제공하지 않아 기술 유출 방지
  • 사용자의 개발 시간 단축

[프로그램 빌드 과정 - 컴파일 과정]

  • 링킹은 프로그램을 빌드 하는 과정에서 (즉, 컴파일 과정에서 거치는 단계)

[그림 1]을 보면 compiling 구간-> compile
=> Compiling + Linking == 큰 의미의 컴파일
=> compling == 작은 의미의 컴파일
=> 프로그래머가 작성한 코드 -> source file(.cpp, .c)
=> 프로그램 빌드(Compiling + Linking) 진행 -> .exe 파일 전송

[링커(Linker)의 링킹(Linking) 과정]

[그림 2]를 보면 실행 파일은
=> 목적 파일(Object file) + 라이브러리 파일(Library file)
=> 컴퓨터의 발전으로 인한 디스크 용량 up, 램의 성능 up됨에 따라 프로그램의 크기도 늘어남
=> 즉 한 파일에 모든 소스 코드 작성할 수 없음
=> "그래서!!" 파일들을 분리해서 관리하는 것

[링커(Linker)란?]

  • 여러 소스 코드 파일들을 하나로 합친다. 즉, Object 파일들을 하나로 합침
  • 여기에 Library를 합침으로써 실행파일을 만들어주는 것

[그림 3]을 보면
=> 1번째 과정에서는 오프젝트 파일에 있는 동일한 섹션들을 하나의 덩어리로 합침
=> 여기서 링커가 하는 일은? --> 라이브러리 합치는 것
=> 예를 들어,
1. cout(입/출력 라이브러리 함수)클래스 라이브러리 사용
2. cout이 포함되어 있는 문장을 출력하기 위해 오브젝트 파일들을 다 하나로 링크
3. .exe파일에 라이브러리를 집어넣는 것 -> static linking

profile
EasyWin32를 통해 C언어를 공부하고 있습니다~

0개의 댓글

관련 채용 정보