C 언어에서 실행 파일을 생성하는 과정은 아래 그림과 같다.
1. 소스 파일(source file)의 작성
우리가 일반적으로 하는 코딩이다.
2. 선행처리기(preprocessor)에 의한 선행처리
선행처리 문자(#)로 시작하는 선행처리 지시문의 처리 작업을 의미한다.
선행처리 작업은 선행처리기(preprocessor)가 수행하며
코드를 생성하는 것이 아닌 컴파일하기 전 컴파일러가 작업하기 좋도록 소스를 재구성해주는 역할을 한다.
3. 컴파일러(compiler)에 의한 컴파일
컴파일(compile): 소스 코드 -> 기계어
컴파일은 컴파일러에 의해 수행된다.
오브젝트 파일(object file): 컴파일이 끝나 기계어로 변환된 파일
4. 링커(linker)에 의한 링크
오브젝트 파일은 운영체제와의 인터페이스를 담당하는 시동 코드(start-up code)를 가지고 있지 않다.
또한, 대부분의 C 프로그램에서 사용하는 C 표준 라이브러리 파일도 포함되어 있지 않다.
이때 하나 이상의 오브젝트 파일과 라이브러리 파일, 시동 코드 등을 합쳐 하나의 파일로 만드는 작업을 링크(link)라고 한다.
링크는 링커(linker)에 의해 수행되며
링크가 끝나면 하나의 새로운 실행 파일이나 라이브러리 파일이 생성된다.
이처럼 여러 개의 소스 파일을 작성하여 최종적으로 링크를 통해 하나의 실행 파일로 만드는 것을 분할 컴파일이라고 한다.
5. 실행 파일(executable file)의 생성
소스 파일은 선행처리기, 컴파일러 그리고 링커에 의해 위와 같은 과정을 거쳐 실행 파일로 변환된다.
레퍼런스
http://www.tcpschool.com/c/c_intro_programming
'development > C' 카테고리의 다른 글
분할 컴파일 & 조건부 컴파일 (0) | 2023.01.05 |
---|